【问题标题】:Typescript: Can a ternary operator or conditional statement be used inside of a constructor?Typescript:可以在构造函数中使用三元运算符或条件语句吗?
【发布时间】:2020-05-19 16:46:41
【问题描述】:

我正在努力改进网页的现有代码。当用户登录时,我希望他们有不同的下拉选项。我正在使用 Angular,并且相应的 component.ts 文件的设置类似于此...

constructor () {
    this.name = this.login ? 'User' : 'Guest';
    ...
    this.list = [
        {display: this.name, value: 'name'},
        {display: this.address, value: 'address'},
        {display: this.company, value: 'company'}
    ];
} 

在上面的例子中,登录是在构造函数之外定义的。 this.name 显示值是唯一给我带来问题的值。三元运算符可以在 Typescript 构造函数中使用吗?如果没有,我应该如何设置显示值改变的条件。我尝试在构造函数之外定义列表,但页面无法正常显示。

【问题讨论】:

  • 是的,您可以在构造函数中使用三元运算符,但我不明白您为什么不自己尝试而不是发布 stackoverflow 问题;)
  • 我自己也试过了,还是不行。

标签: typescript constructor conditional-statements conditional-operator


【解决方案1】:

问题不在于是否可以在构造函数中使用三元运算符。问题是this.login 在构造此组件时只有一种可能的状态。也就是说,如果组件在用户未登录时呈现在视图中,那么当他们最终登录时,这将永远不会改变(除非您重新构建组件)。

相反,您可以在 login 上使用 setter,以便:

private _login = false;

get login(): boolean {
  return this._login;
}

set login(value: boolean) {
  this._login = value;
  this.name = value ? 'User' : 'Guest';
}

【讨论】:

    猜你喜欢
    • 2011-06-10
    • 2020-07-19
    • 2019-12-23
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多