我的服务中有一个功能,对应于此代码:
@Injectable()
export class MyService {
constructor(private http: Http, private router: Router) {}
getInfo() {
return this.http.get(url).map((response: Response) => {return JSON.parse(response)}
}
}
此方法是从组件的ngOnInit
调用的,如下所述:
export class MyComponent implements OnInit {
constructor(private service: MyService) { }
ngOnInit() {
this.service.getInfo().subscribe((data) => {
this.info = data;
});
}
}
问题是,当我导航到此组件时,通过将URL放在浏览器上,它可以正常工作,但是当我使用router.navigate
方法导航到此组件时,它会抛出异常,
getInfo不是函数
请纠正我的问题在哪里以及我做错了什么?
答案 0 :(得分:2)
您应该将服务注入组件,在哪里使用它。您可以这样做,将服务声明为组件构造函数的参数。例如:
simple.service.ts
@Injectable()
export class SimpleService {
constructor(private http: Http) {}
someMethod() { //some method }
}
some.component.ts
export class SomeComponent implements OnInit {
constructor(private simpleService: SimpleService) { }
ngOnInit() {
this.simpleService.someMethod();
}
}
我不确定,如果这是一个解决方案但是")"您的服务方法中缺少字符。看起来应该是这样的:
return this.http.get(url).map((response: Response) => {return JSON.parse(response)})
甚至:
return this.http.get(url).map((response: Response) => response.json())