angular2 - ROUTER_PROVIDERS 未定义

angular2 - ROUTER_PROVIDERS is not defined

我在 system.config.js 中有这段代码,用于导入 angular2 的旧路由器(已弃用的路由器)。

'@angular/router-deprecated': 'npmcdn:@angular/router-deprecated@'+angularVersion,

我收到这个错误:

system.src.js:43 Uncaught (in promise) Error: ROUTER_PROVIDERS is not defined(…)

这就是 plunkr here

我该如何解决这个问题?

index.ts

中添加下一行
import { ROUTER_PROVIDERS, RouteConfig, ROUTER_DIRECTIVES } from '@angular/router-deprecated';

并在你的app2.ts文件中添加providers: [ROUTER_PROVIDERS]

你的 plunker 有几个问题。

app/index.ts

  • 添加导入:

    import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
    import { HashLocationStrategy, LocationStrategy } from '@angular/common';
    import { provide } from '@angular/core';
    
  • 不是强制性的,但您应该删除 .ts 扩展名:

    import { App } from './app2.ts';
    

    应该是:

    import { App } from './app2';
    

app/home.ts

  • 添加路径到templateUrl:

    templateUrl: './home.html'
    

    变为:

    templateUrl: './app/home.html'
    

app/add_developer.ts

  • 也把路径添加到templateUrl:

    templateUrl: './add_developer.html'
    

    变为:

    templateUrl: './app/add_developer.html'
    

常规:更新 *ngFor 表示法

  • 考虑将 *ngFor 符号更新到最新。你在几个地方使用它。使用 let 而不是 #。例如,在 app/home.html:

    <tr *ngFor="#dev of getDevelopers()">
    

    应该是

    <tr *ngFor="let dev of getDevelopers()">
    

Click here for your updated plunker(包括 *ngFor 更改)。