Angular2函数调用抛出typeerror

时间:2017-08-18 12:41:34

标签: angular typescript

我的服务中有一个功能,对应于此代码:

    @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不是函数

请纠正我的问题在哪里以及我做错了什么?

1 个答案:

答案 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())