typescript Angular 7类型错误:service.x不是函数

cpjpxq1n  于 2023-03-19  发布在  TypeScript
关注(0)|答案(3)|浏览(154)

我做了一个路由服务,想把它注入到我的导航组件中。但是当我调用它的方法时,它抛出了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;
  }
}
swvgeqrz

swvgeqrz1#

不要把providedIn部分放在这里,只需放入@Injectable(),然后在你的app.module.ts文件中,把服务添加到providers下面。

constructor(private whateverService: WhateverService) {
}

在任何组件中,你都应该可以访问,而不会出错。我看到你在代码段中将其设置为私有,但这总是让我感到困惑,所以在注入构造函数时,请确保它是私有的。

62o28rlo

62o28rlo2#

哦,男孩,我也得到这个错误...在我的app.module.ts文件中,我有一个useFactory构造函数顺序问题:
我得到这个错误:访问错误:6210访问错误:未被抓住的(承诺中的):类型错误:appConfig.get不是函数类型错误:appConfig.get不是函数

未通过:

useFactory:
                (
                    permissionService: NgxPermissionsService
                    appConfig: AppConfigService, //the order matters
                ) =>
                async () => {
const promise = await appConfig
                            .get()
                            .toPromise()
                            .then((x) => {
                                //console.log('app.module.ts: toPromise.then() Env:', x);
                                appConfig.setConfig(x);
                                return x;
                            }); //await toPromise causes the env to be updated before running the rest of the code
                        return promise;

成功:

useFactory:
                (
                    appConfig: AppConfigService, //the order matters
                    permissionService: NgxPermissionsService
                ) =>
                async () => {
const promise = await appConfig
                            .get()
                            .toPromise()
                            .then((x) => {
                                //console.log('app.module.ts: toPromise.then() Env:', x);
                                appConfig.setConfig(x);
                                return x;
                            }); //await toPromise causes the env to be updated before running the rest of the code
                        return promise;
mkshixfv

mkshixfv3#

这个问题也可能是由于创建了一个循环依赖引起的,如果服务A被注入到服务B中,服务B又被注入到服务A中,A.foo从服务B调用www.example.com()会导致错误“A. foo()不是函数”,实际上A不会被正确示例化,没有方法和属性。

相关问题