Angular 如果条件允许,防止选择mat选项

Angular 如果条件允许,防止选择mat选项,angular,angular2-template,angular-material2,Angular,Angular2 Template,Angular Material2,我想阻止选择mat选项,因为单击它将打开一个对话框。只有在从对话框中选择内容时,才应选择“我的选项”。如果未从对话框中选择任何内容,则mat选项不应更改为以前的值 <mat-select [(ngModel)]="filter_defaultSelectedValue" (change)="changeSelectedValue($event.value)"> <mat-option *ngFor="let filter of filt

我想阻止选择mat选项,因为单击它将打开一个对话框。只有在从对话框中选择内容时,才应选择“我的选项”。如果未从对话框中选择任何内容,则mat选项不应更改为以前的值

<mat-select 
        [(ngModel)]="filter_defaultSelectedValue" 
        (change)="changeSelectedValue($event.value)">
   <mat-option *ngFor="let filter of filters" [value]="filter">
      <span *ngIf="filter.id != 'custom'; else content_dialog">
         {{filter.label | i18n}}
      </span>
      <ng-template #content_dialog>
         <dialog
            [filterParams] = "filter.value">
         </dialog>
      </ng-template>
   </mat-option>
</mat-select>

{{filter.label | i18n}}
My mat select具有以下选项:“昨天”、“今天”、“明天”、“自定义范围”。例如,当我单击“昨天”时,它会被选中,但当我单击“自定义范围”时,会打开一个带有日历的对话框。如果我从日历中选择了一个日期,对话框将关闭,并选择“自定义范围”选项。当我关闭对话框而不从日历中选择任何内容时,将再次选择“自定义范围”选项。我不希望发生这种选择,因为我没有从日历中选择任何内容。我如何调节这个


我通过在代码中更改ngModel“filter\u defaultSelectedValue”来处理这种特殊情况。 如果在对话框中未选择任何内容,则ngModel将设置为以前设置的某个值:

this.filter_defaultSelectedValue = this.lastSelection;

如果选择了对话框中的某个内容,则我让mat select将我的“filter\u defaultSelectedValue”更改为该选定值。

谢谢,这对我很有帮助。我有一个非常相似的用例,我正在使用反应形式。在我的应用程序中,如果用户从mat select选择一个特定值,则会显示一个带有Accept、Cancel按钮的特殊警告弹出窗口。如果用户接受,特定值将保持设置。但是,如果用户选择取消,则应设置上一个值。当更新模型
[(ngModel)]
之前,mat select上的
(valueChange)
事件触发时,我能够将以前的值存储在名为
previousOption
的组件属性中。然后,我将另一个名为
currentOption
的属性数据绑定到
[(ngModel)]
,并使用事件绑定
(valueChanges)
将上一个选项设置为当前选项。然后,您可以连接您的
(selectionChange)
以执行任何操作。

我需要更多信息来帮助您。我已更新了我的问题我已在此处发布了解决方案: