【问题标题】:Cannot read property 'isXXXXX' of undefined [closed]无法读取未定义的属性“isXXXXX”[关闭]
【发布时间】:2019-09-29 01:54:57
【问题描述】:

我正在尝试在我的一个组件上使用共享服务。当我使用应用程序根组件时,它工作正常。当我尝试在另一个模块/仪表板上使用时,出现错误。

shared/authorize.service.ts

@Injectable()
export class AuthorizationService {
  isDoingSomething() {
    return "Some Boolean value";
  }
}

dashboard/header/header.component.ts

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.css']
})
export class HeaderComponent {
 constructor(private _auth: AuthorizeService,
          private _router: Router) { }
}

dashboard/header/header.component.html

<mat-toolbar color="primary" role="heading">
  <div fxFlex fxLayout fxLayoutAlign="flex-end">
    <ul fxLayout fxLayoutGap="10px" class="navigation-items">
      <li routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
        <a routerLink="/home">Home</a>
      </li>
      <li routerLinkActive="active">
        <a *ngIf="_auth.isDoingSomething()" routerLink="/docall">Rest Call</a>
      </li>
    </ul>
  </div>
</mat-toolbar>
**HeaderComponent.html:6 ERROR TypeError:** Cannot read property 'isDoingSomething' of undefined
     at Object.eval [as updateDirectives] (HeaderComponent.html:6)
      at Object.debugUpdateDirectives [as updateDirectives] (core.js:23911)
      at checkAndUpdateView (core.js:23307)

【问题讨论】:

  • 为你的服务注入器试试这个@Injectable({ providedIn: 'root' })

标签: angular typescript angular-services


【解决方案1】:

我认为如果你在你的应用程序中使用延迟加载,你必须创建一个共享模块并将你的服务添加到它的提供程序中,然后将它导入到你想要使用的每个模块中。

@NgModule({
  imports: [],
  declarations: [],
  exports:[],
  providers: [
     YourService
  ]
})

 export class SharedModule {
}

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多