javascript - NgModel 没有反射(reflect)从下拉列表中选择的值,该下拉列表的值是根据另一个下拉列表填充的

标签 javascript angular typescript angular-ngmodel

加载组件时,我希望 mainTaskmainJob 在下拉列表中反射(reflect)为选择,mainTask 按预期反射(reflect)但 mainJob 未在 UI 中更新。但是,如果我在 UI 中从 taskList 手动选择一个值,mainJob 就会相应更新。看起来 mainJob 没有得到反射(reflect),因为 jobList 下拉列表是由选择 mainTask 触发的。如何更正我的代码?

html 文件

<mat-form-field>
              <mat-select [(ngModel)]="mainTask">
                <mat-option *ngFor="let task of taskList"
                            [value]="task"
                            (click)="getJobs()">
                  {{task}}
                </mat-option>
              </mat-select>
            </mat-form-field>

    <mat-form-field>
              <mat-select [(ngModel)]="mainJob">
                <mat-option *ngFor="let job of jobList"
                            [value]="job">
                  {{job}}
                </mat-option>
              </mat-select>
            </mat-form-field>

ts 文件

ngOnInit(): void {
    this.taskList = ['task1','task2','task3'];
    this.jobList = ['job1','job2','job3'];
    this.mainTask = 'task2';
    this.mainJob = 'job2';
}
getJobs():void {
    if(mainTask){
       const jobIndex = this.taskList.indexOf(this.mainTask);
       this.jobList.splice(0, jobIndex);
    }
}

最佳答案

是的,只有调用 getjobs() 函数时才会选择 mainJob,

您可以在组件中为 mainJob 分配一个值,例如

mainJob:string = 'job2';

而不是在 ngOnIt 中。检查这个笨蛋here

关于javascript - NgModel 没有反射(reflect)从下拉列表中选择的值,该下拉列表的值是根据另一个下拉列表填充的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49507955/

相关文章:

debugging - typescript 调试/断点不起作用

Angular ngIf : Identifier 'length' is not defined

javascript - Three.js - 无法使用本地镜像进行loadTexture

angular - ngFor 中的动态组件

javascript - 如何仅在OnInit之后启动iterableDiffer?

javascript - 类型错误 : Cannot read property 'url' of undefined

Angular 2 RC 5 Bootstrap 自定义 HTTP 类

javascript - body 没有 getElementById 吗?

javascript - 嵌套 View 在 Ionic 中变为空白

满足条件后 JavaScript 超时