Angular: Как маршрутизатор может быть внедрен в компонент, если он не был объявлен ни одним поставщиком? - PullRequest
0 голосов
/ 30 октября 2018

Предположим, у нас есть следующий компонент:

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

Для того, чтобы что-то было внедрено в компонент, мы должны объявить это либо в массиве провайдеров компонента / суперкомпонента, либо в модуле. Поскольку Router не был объявлен ни одним из способов, как он может быть доступен в конструкторе?

Это потому, что он предоставляется по умолчанию в Angular?

1 Ответ

0 голосов
/ 30 октября 2018

Router предоставляется RouterModule, github repo :

export const ROUTER_PROVIDERS: Provider[] = [
  Location,
  {provide: UrlSerializer, useClass: DefaultUrlSerializer},
  {
    provide: Router,
    useFactory: setupRouter,
...

static forRoot(routes: Routes, config?: ExtraOptions): ModuleWithProviders<RouterModule> {
    return {
      ngModule: RouterModule,
      providers: [
        ROUTER_PROVIDERS,
...
...