gpt4 book ai didi

javascript - Angular2,EventEmitter 上的订阅属性不存在?

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:47 24 4
gpt4 key购买 nike

我的 app.component包含 <nav>的网站,它使用 [routerLink]转到不同的页面。它导入每个页面的组件。其中一个页面是登录页面。如果用户未登录,我希望导航显示登录 - 如果用户已登录,则注销。

app.component :

my_userO : userO = undefined;

constructor (private my_userS:userS){
my_userS.userChanged.suscribe(temp => this.updateNav());

updateNav(){
this.my_userO = this.my_userS.getUser();
}

logOut(){
this.my_userS.setUser(undefined);
}

在其模板中:

<li><a *ngIf="!my_userO" [routerLink]="['LoginPage']">Login</a></li>
<li><a *ngIf="my_userO" [routerLink]="['HomePage']"(click)="logOut()">Logout</a></li>

userS是一项全局服务(它在 main.ts 中启动,并且没有作为提供者添加到我正在使用它的任何组件中)我看起来像这样:

public userChanged: EventEmitter<{}>
currentUser : userO = undefined;

constructor(private http:Http){
this.userChanged = new EventEmitter();
}

getLogin(username: string, password: string): Promise<userO>{
return this.http.get(this.getLoginUrl+username).toPromise().then(response => response.json().data).catch(this.handleError);
}

getUser(){
return this.currentUser;
}

setUser(x_userO: userO){
this.currentUser = x_userO;
this.userChanged.emit(undefined);
}

在登录页面,我只运行getLogin然后 setUser用前者返回的东西。

我的问题是我收到错误“属性订阅在类型 EventEmitter<{}> 上不存在”。

最佳答案

使用 vscode,自动完成添加了这一行:

import { EventEmitter } from 'events';

我必须将其更改为以下内容才能解决此问题。

import { EventEmitter } from '@angular/core';

关于javascript - Angular2,EventEmitter 上的订阅属性不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38249155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com