ERROR Error: Uncaught (in promise): Error: No provider for ActivatedRoute
ERROR Error: Uncaught (in promise): Error: No provider for ActivatedRoute
package.json 依赖关系
"dependencies": {
"@angular/cli": "1.0.0",
"@angular/compiler-cli": "^4.0.0",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"core-js": "^2.4.1",
"rxjs": "^5.1.0",
"zone.js": "^0.8.4"
}
在组件 post-show.component.ts 中,我导入了 'ActivatedRoute' 并使用了-
import {Component, OnInit, Input } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Post } from './post';
import { PostService } from './post.service';
@Component({
selector: 'post-show',
templateUrl: 'post-show.component.html',
styleUrls: ['post-list.component.css']
})
export class PostShowComponent implements OnInit {
id: number;
routerId: any;
constructor(private http: Http, private route: ActivatedRoute, private postService: PostService ) {}
@Input() post: Post;
ngOnInit(){
this.routerId = this.route.params.subscribe(
params => {
this.id = +params['id'];
})
let postRequest = this.route.params
.flatMap((params: Params) =>
this.postService.getPost(+params['id']));
postRequest.subscribe(response => this.post = response.json());
}
}
当我尝试通过错误使用'ActivatedRoute'时-
ERROR Error: Uncaught (in promise): Error: No provider for ActivatedRoute!
Error: No provider for ActivatedRoute!
请在您的主模块中导入 RouterModule。
您需要添加:
供应商:[ActivatedRoute],在@Component,像这样:
@Component({
selector: 'post-show',
templateUrl: 'post-show.component.html',
styleUrls: ['post-list.component.css'],
providers: [ ActivatedRoute ]
})
对我有用的是:
import { RouterTestingModule } from '@angular/router/testing';
然后在 .spec
文件中导入 RouterTestingModule
:
imports: [
RouterTestingModule,
],
package.json 依赖关系
"dependencies": {
"@angular/cli": "1.0.0",
"@angular/compiler-cli": "^4.0.0",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"core-js": "^2.4.1",
"rxjs": "^5.1.0",
"zone.js": "^0.8.4"
}
在组件 post-show.component.ts 中,我导入了 'ActivatedRoute' 并使用了-
import {Component, OnInit, Input } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Post } from './post';
import { PostService } from './post.service';
@Component({
selector: 'post-show',
templateUrl: 'post-show.component.html',
styleUrls: ['post-list.component.css']
})
export class PostShowComponent implements OnInit {
id: number;
routerId: any;
constructor(private http: Http, private route: ActivatedRoute, private postService: PostService ) {}
@Input() post: Post;
ngOnInit(){
this.routerId = this.route.params.subscribe(
params => {
this.id = +params['id'];
})
let postRequest = this.route.params
.flatMap((params: Params) =>
this.postService.getPost(+params['id']));
postRequest.subscribe(response => this.post = response.json());
}
}
当我尝试通过错误使用'ActivatedRoute'时-
ERROR Error: Uncaught (in promise): Error: No provider for ActivatedRoute! Error: No provider for ActivatedRoute!
请在您的主模块中导入 RouterModule。
您需要添加: 供应商:[ActivatedRoute],在@Component,像这样:
@Component({
selector: 'post-show',
templateUrl: 'post-show.component.html',
styleUrls: ['post-list.component.css'],
providers: [ ActivatedRoute ]
})
对我有用的是:
import { RouterTestingModule } from '@angular/router/testing';
然后在 .spec
文件中导入 RouterTestingModule
:
imports: [
RouterTestingModule,
],