组件模板中有select和input元素:
<select #dataType
name="data_type"
[(ngModel)]="model.data_type">
<option *ngFor="let t of dataTypes" [value]="t.type">{{ t.name }}</option>
</select>
<input #typeTemplate
name="type_template"
type="text"
pattern="[0-9]+"
[(ngModel)]="model.type_template"/>
同样在组件代码中有一个这样的字典:
const patternsByTypes = {
'int': '[0-9]+',
// etc 'data_type' : 'pattern'
}
patternsByTypes
字典描述了dataType
选择值与typeTemplate
输入模式之间的关系。
如果pattern
选项的更改符合typeTemplate
,如何更改dataType
输入的patternsByType
属性?
答案 0 :(得分:1)
您需要具有如下所示的ngModelChange事件:
<select #dataType name="data_type" [(ngModel)]="model.data_type" (ngModelChange)="setPattern($event)">
<option *ngFor="let t of dataTypes" [value]="t.type">{{ t.name }}</option>
</select>
<input #typeTemplate name="type_template" type="text" [pattern]="selectedPattern"
[(ngModel)]="model.type_template"/>
<强>组件强>
您需要更改字典,如下所示:
const patternsByTypes = {
'int': '[0-9]+',
//etc
}
selectedPattern:any;
setPattern($event){
this.selectedPattern = this.patternsByTypes[$event];
}
希望它有所帮助!!
答案 1 :(得分:0)
您可以通过添加方括号使图案动态化。
[pattern]="model.data_type"