typescript - Angular2 使用条件运算符绑定(bind)

标签 typescript angular

我对 angular2 中的绑定(bind)有疑问。

我写了一个简单的组件,这是代码:

@Component({
    selector: 'drawer-item',
    templateUrl: '../res/views/drawer-item.html'
})
export class DrawerItemComponent
{
    @Input() text:string;
    @Input() icon:string;
    @Input() textClass:string;
}

<div class="drawer-item-text word-wrap {{textClass}}"> {{text}}</div>
<i class="mdi mdi-{{icon}} drawer-item-img"></i>

我是这样使用的:

<drawer-item (click)="selectCompany()" [text]="selectedCompanyLabel" [icon]="selectedCompanyIcon" [textClass]="selectedCompanyClass"></drawer-item>

如您所见,我将文本与变量绑定(bind)在一起,例如 selectedCompanyLabel。 通过这种方式,一切都很好,如果 selectedCompanyLabel 发生变化,标签也会发生变化。

我会避免使用类似这样的变量:

[text]="company ? 'company.name' : 'Select a company'"

但是这样内容是没有绑定(bind)的。因此,如果公司发生变化,则标签不会更新。

但如果我以某种方式使用该策略,它就会奏效!例如,类似的东西效果很好:

<div class="company ? 'italic' : 'bold'"> ... </div>

你知道为什么吗?

非常感谢

最佳答案

我会改用以下内容:

[text]="company ? company.name : 'Select a company'"

company.name 没有引号。

关于typescript - Angular2 使用条件运算符绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549625/

相关文章:

javascript - 从 Angular 1 移动到 Angular 2 时所需的先决条件

具有管理历史记录的 Angular 6+ 自定义后退导航

javascript - 如何通过 id 存储在变量中来渲染组件?

javascript - 根据对象响应显示复选框 Angular

typescript - 使用 Typescript 的 Reactive Vue Chart.js 组件

Typescript - 从另一个联合类型的字段值中获取联合类型

angular - Angular 编译器要求 TypeScript >=2.7.2 和 <2.8.0,但找到了 2.8.3

angular - 使用 Bootstrap 和 sass 对 Angular 应用程序和库进行主题化

angular - 错误类型错误 : Cannot read property 'length' of null in Angular 6

angular - Visual Studio 警告 : (ESLint) Failed to load config "defaults/configurations/eslint" to extend from. 引用自 C :\Users\{username}\. eslintrc