为什么我的Angular应用程序中的这个表达式显示文字文本而不是评估表达式的结果?

时间:2017-05-15 18:48:04

标签: javascript angular typescript

我试图找出为什么我的Angular应用程序的一部分显示 - 字面意思 - 'zipcodeFilters.text',而不是评估结果。

我在这里使用的相关视图代码如下所示:

<filter-option name="Zipcode"
        placeholder="Enter ZIP Code"
        [usePlaceholder]="!zipcodeFilters.text"
        [visible]="zipcodeFilters.enabled">
    <filter-label>{{zipcodeFilters.text}}</filter-label>
    <filter-menu>
        <div class="visit-type-filter-options">
            <md-input-container [dividerColor]="color">
                <input mdInput placeholder="ZIP Code" 
                       value="zipcodeFilters.text" 
                       [(ngModel)]="zipcodeFilters.text" 
                       (keyup.enter)="filterByZip(zipcodeFilters.text)">
            </md-input-container>
            <button md-button class="reset-button" (click)="filterByZip(zipcodeFilters.text)">Filter</button>
            <button md-button class="reset-button" (click)="unfilterZipResults()">Reset</button>
        </div>
    </filter-menu>
</filter-option>

从上一节你会看到:

    placeholder="Enter ZIP Code"
    [usePlaceholder]="!zipcodeFilters.text"

...用来说,如果没有'zipcodeFilters.text'的结果(即用户没有输入任何内容),那么使用占位符,即“输入邮政编码”。

然而,当我第一次加载组件视图时,我没有看到“输入邮政编码”,我看到 - 字面意思 - 'zipcodeFilters.text'。

如果我删除它,则过滤器会按预期显示占位符文本。但是,刷新页面后,我又回到了'zipcodeFilters.text',而不是占位符文本。

相应组件的相关部分如下所示:

zipcodeFilters = {
    enabled: true,
    options: [

    ],
    text: null
};

public filterByZip(zip) {
    const arr: any = [];
    if (zip) {
      arr.push(zip);
    }
    const zipCall = this.zip = arr.length === 0 ? undefined : arr.toString().split(', ');
    const zipArr = Array.from(zipCall);
    this.sendZipcode.emit(zipArr);
}

unfilterZipResults() {
    this.sendZipcode.emit();
    const arr = [];
    this.zipcodeFilters.text = '';
}

是什么让这个显示文字文本而不是评估表达式?

1 个答案:

答案 0 :(得分:3)

值=&#34; zipcodeFilters.text&#34;删除这部分..它应该工作