angular - 重新加载选择选项

标签 angular

我有两个选择输入:国家/地区和城市。 我想在更改国家/地区后更改城市,但只有在我打开城市选择两次后它们才会更改。 好像我选择国家后,ngFor循环并没有立即运行。

选择国家/地区后如何立即更改城市选项?

<div class="form-group">
  <label for="country">Country</label>
  <select class="form-control" id="country" name="country" #countrySelect>
    <option *ngFor="let country of countries" [value]="country.id">{{country.name}}</option>
  </select>
</div>

<div class="form-group">
  <label for="city">City</label>
  <select class="form-control" id="city" name="city" #citySelect [(ngModel)]="publisher.cityId">
    <option *ngFor="let city of cities"
            [hidden]="countrySelect.value != city.countryId"
            [value]="city.id">
      {{city.name}}
    </option>
  </select>
</div>

最佳答案

您可以使用change指令。 以下是如何执行此操作的示例。首先,您必须构建一个自定义函数来过滤每个国家/地区的城市

<select (change)="onChange($event.target.value)">
  <option *ngFor="let country of countries" [value]="country.id">{{country.name}}</option>
</select>

 <select class="form-control" id="city" name="city" #citySelect [(ngModel)]="publisher.cityId">
<option *ngFor="let city of filteredCities"
        [hidden]="countrySelect.value != city.countryId"
        [value]="city.id">
  {{city.name}}
</option>

allCities = [];
filteredCities = [];
allCountries = [];

onChange(country) {
   filteredCities = [];//You empty filterdCities
   //Then filter allCities variable according to selected country values and add values to 
}

关于angular - 重新加载选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010853/

相关文章:

angular - 如果其他选择框选项更改为 Angular 2.0 中的相同选项,如何添加和删除选择框选项

angular - 如何修复 'No provider for service' 错误?

angular - 将 Angular 从 4.0.0-beta.5 升级到 4.0.0 会中断动画和单元测试

dynamic - 我如何在 Angular 2 中使用 "SystemJsNgModuleLoader"将动态模块导入应用程序?

javascript - 如何在服务中缓存数据?

javascript - Angular 2 : is styleUrls relative to the current component?

angular - 无法绑定(bind)到 'ngModel',因为它不是 'input' 的已知属性。测试.spec.ts

Angular 4 setTimeout不等待

angular - 哈希位置策略不起作用——Angular 4——NgxChartsModule 破坏了哈希位置策略

angular - 如果术语不为空/空,如何只执行一个 Observable?