NgModel未反映下拉列表中的选定值,其值根据另一个下拉列表填充

时间:2018-03-27 08:30:42

标签: javascript angular typescript angular-ngmodel

加载组件后,我希望mainTaskmainJob在下拉列表中反映为选择,mainTask按预期反映,但mainJob未更新用户界面。但是,如果我从taskList手动选择UI中的值,则相应地更新mainJob。看起来mainJob没有得到反映,因为mainTask选择了jobList下拉列表。我该如何更正我的代码?

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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

你可以在像

这样的组件中为mainJob赋值
mainJob:string = 'job2';

而不是ngOnIt。检查这个plunker here