我做了一个路由服务,想把它注入到我的导航组件中。但是当我调用它的方法时,它抛出了TypeError: routingService.getRequestedPage is not a function
。昨天我在另一个服务上遇到了一个非常类似的问题,不幸的是我忘了我是如何解决这个问题的。我用终端生成了这个服务。src/app/nav/nav.component.ts
构造函数:
constructor(private templateService: TemplateService, private routingService: RoutingService) {
this.getTemplates();
if (this.routingService.getRequestedPage() === 'home') {
this.showHome();
}
}
src/app/nav/nav.component.ts
导入:
import {RoutingService} from '../shared/routing.service';
src/app/shared/routing.service.ts
:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class RoutingService {
private requestedPage: string;
constructor() {
this.requestedPage = 'home';
}
requestPage(page: string) {
this.requestedPage = page;
}
getRequestedPage() {
return this.requestedPage;
}
}
3条答案
按热度按时间swvgeqrz1#
不要把providedIn部分放在这里,只需放入@Injectable(),然后在你的app.module.ts文件中,把服务添加到providers下面。
在任何组件中,你都应该可以访问,而不会出错。我看到你在代码段中将其设置为私有,但这总是让我感到困惑,所以在注入构造函数时,请确保它是私有的。
62o28rlo2#
哦,男孩,我也得到这个错误...在我的app.module.ts文件中,我有一个useFactory构造函数顺序问题:
我得到这个错误:访问错误:6210访问错误:未被抓住的(承诺中的):类型错误:appConfig.get不是函数类型错误:appConfig.get不是函数
未通过:
成功:
mkshixfv3#
这个问题也可能是由于创建了一个循环依赖引起的,如果服务A被注入到服务B中,服务B又被注入到服务A中,A.foo从服务B调用www.example.com()会导致错误“A. foo()不是函数”,实际上A不会被正确示例化,没有方法和属性。