0

在 Angular Dependency Injector 中,当我们注入 Type 时,我们会将它们包含在 providers 数组中(可能在@NgModule装饰器或@Component装饰器中。但是在以下实例中,当我们以编程方式导航时,我们将Router实例注入构造函数,但我们不在 providers 数组中提供就像我们通常在 Angular Dependency Injector 中所做的那样。

这里与 Angular Dependency Injector 有什么不同?供您参考,我将附上两个代码

程序化导航 - 代码

import { Router } from '@angular/router';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  constructor(private router:Router) { }

  ngOnInit() {
  }

  onLoadServer(){
    this.router.navigate(['servers']);
  }

}

Angular Dependency Injector 方式 - 代码

import { Component,Input} from '@angular/core';
import { LoggingService } from '../logging.service';


@Component({
  selector: 'app-account',
  templateUrl: './account.component.html',
  styleUrls: ['./account.component.css'],
  providers:[LoggingService]
})

export class AccountComponent {
  @Input() account: {name: string, status: string};
  @Input() id: number;

  constructor(private logginService:LoggingService){

  }
  
  onSetTo(status: string) {
    
 
    this.logginService.loggingStatusChange(status);
    
  }
}

4

1 回答 1

1

RouterModule.forRoot 已经在根注入器中注入了路由器,这就是为什么您不必将它包含在提供程序数组中的任何地方。你可以在这里读到它 :-

https://angular.io/api/router/RouterModule#forroot

于 2021-08-12T13:06:09.933 回答