使用Angular 5渲染页面时出现错误。

3

我正在使用Angular 5完成一个项目,需要调用其中的API。

但是我遇到了以下错误:

Error: StaticInjectorError(AppModule)[Router -> ApplicationRef]: 
  StaticInjectorError(Platform: core)[Router -> ApplicationRef]: 
    NullInjectorError: No provider for ApplicationRef!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:951)
    at resolveToken (core.js:1195)
    at tryResolveToken (core.js:1140)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1035)
    at resolveToken (core.js:1195)
    at tryResolveToken (core.js:1140)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1035)
    at resolveNgModuleDep (core.js:8071)
    at _callFactory (core.js:8143)
    at _createProviderInstance$1 (core.js:8091)

我的Package.json文件如下:

{
  "name": "demo-app",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^6.0.3",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "core-js": "^2.5.4",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "^6.0.3",
    "@angular-devkit/build-angular": "~0.6.8",
    "typescript": "~2.7.2",
    "@angular/cli": "~6.0.8",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1"
  }
}

我有一个app.module.ts文件,其中我定义了一个名为“fetch”的路由,并调用相应的控制器。
import { NgModule } from '@angular/core';
import { FetchApiComponent } from './fetch-api/fetch-api.component';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
{ path: 'fetch', component: FetchApiComponent },

];

@NgModule({
  declarations: [

    FetchApiComponent
  ],
  imports: [

    RouterModule.forRoot(routes)
  ],
exports: [
RouterModule
],
  providers: [],
  bootstrap: []
})
export class AppModule { }

主代码如下:main.ts
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));

显示错误是由于 main.ts 文件中的以下代码所引起的。
platformBrowserDynamic().bootstrapModule(AppModule)
      .catch(err => console.log(err));

错误截图:

在此输入图片描述


请删除 exports: [RouterModule] 并查看。 - Pranay Rana
你为什么要导出RouterModule? - Shumail
移除了导出项 [ RouterModule ] 后仍然没有任何变化,错误仍存在。 - N Sharma
1个回答

9
为了达到期望的结果并避免出现错误,需要引入BrowserModule
import { NgModule } from '@angular/core';
import { FetchApiComponent } from './fetch-api/fetch-api.component';
import { Routes, RouterModule } from '@angular/router';
import { BrowserModule } from '@angular/platform-browser';

const routes: Routes = [
{ path: 'fetch', component: FetchApiComponent },

];

@NgModule({
  declarations: [

    FetchApiComponent
  ],
  imports: [
    BrowserModule, 
    RouterModule.forRoot(routes)
  ],
exports: [
RouterModule
],
  providers: [],
  bootstrap: []
})
export class AppModule { }

参考代码示例 - https://stackblitz.com/edit/angular-2xbbzj?file=src/app/app.module.ts

注意:从导入中移除BrowserModule,以查看相同的错误。


@N Sharma,很高兴能帮到你 :) .. 如果我的帖子帮助解决了你的问题,请将我的帖子标记为答案。 - Naga Sai A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接