我正在使用 Angular 7 ,并且我希望每次更改按钮上的文字单击它应该是登录还是注销
我将我的代码放在下面:
ts文件:
export class HeaderComponent implements OnInit {
text: any;
constructor() {
this.loadDataFromApi();
}
ngOnInit() {
if (this.token == null) {
this.text == 'login';
alert(this.text);
} else if (this.token) {
this.token == 'logout';
alert(this.text);
}
}
}
警报未定义即将出现
html文件:
<button type="button"> {{text}}</button>
答案 0 :(得分:3)
您正在使用比较运算符(==
)而不是赋值运算符(=
)。更改它,它应该可以正常工作。像这样:
export class HeaderComponent implements OnInit {
text: any;
constructor() {}
ngOnInit() {
this.loadDataFromApi();
if (this.token) {
this.text = 'logout';
alert(this.text);
} else {
this.text = 'login';
alert(this.text);
}
}
}
PS: this.loadDataFromApi
本质上很可能是async
,此调用下面的代码将在不等待的情况下被执行,从而导致意外行为。因此,在大多数情况下,您会在警报中收到login
。
答案 1 :(得分:2)
您应该使用赋值=
运算符而不是比较==
运算符
this.text ='login';
export class HeaderComponent implements OnInit {
text: any;
constructor( );
this.loadDataFromApi();
}
ngOnInit() {
if(this.token == null){
this.text ='login';
alert(this.text);
} else if (this.token){
this.token = 'logout';
alert(this.text);
}
}
答案 2 :(得分:1)
try,而不是 _mongoCollection.Find(c => c.CleanedNames.Contains(stringCleaned)).ToList();
尝试this.token == null
(这将检查undefiend以及null并建议使用的方式)
!this.token
答案 3 :(得分:1)
在else
之后,您将修改this.token
,而不是this.text
。
此外,您应该使用=
而不是==
来分配this.text
。像这样更改代码:
ngOnInit() {
if (this.token === null) {
this.text = 'login';
alert(this.text);
} else if (this.token) {
this.text = 'logout';
alert(this.text);
}
}
PS :token
变量在哪里定义?在您的.ts
文件中看不到它。
答案 4 :(得分:0)
基本上,您要检查是否有身份验证令牌,然后将文本作为注销帐户,而令牌不是他们的显示登录名。
在您看来,此令牌未定义为默认值
这就是为什么警报中显示未定义的原因。
两个条件都不起作用
应该像
if (this.token) {//The user is logged in so log out should show.
this.text = 'logout';
alert(this.text);
} else {//The user is logged out in so login should show
this.token == 'logout';
alert(this.text);
}
请先检查this.token的值,是否已设置该值。