我正在編寫一個應該只允許使用特定數字格式的組件,它除了一件事情外很好,它每次都會切片,但每隔兩次更新視圖。所以,如果我把它寫在這個序列:儘管每次都運行,但每隔兩次只切分一次值
一個 乙 Ç d
我結束了BD。
我不明白這裏發生了什麼。
這是組件:
@Component({
selector: 'my-input',
templateUrl: 'my-input.html',
styleUrls: ['my-input.css'],
inputs: [
'model',
'pattern'
],
host: {
'(input)': 'isNum($event.target.value)'
},
providers: [
RegexService
]
})
export class FormNumberInputComponent {
@Input() model: number;
@Output('modelChange') onModelChange: EventEmitter<any> = new EventEmitter();
constructor(private _regexes: RegexService) {}
isNum(value) {
this.isInvalid = !this._regexes.test(this.pattern || 'integer', value);
if (!this.isInvalid) {
this.onModelChange.emit(value);
}
else {
value = value.slice(0, -1);
// This also doesn't work, gives the same result
value = value.substring(0, -1);
this.onModelChange.emit(value);
}
}
}
而簡單的模板:
<input [(ngModel)]="model">
從父組件使用這樣的:
<my-input [(model)]="myModel1"></my-input>
我注意到你正在使用'切片'在代碼中,但在你的問題,你說你是'剪接'。這是我想的問題,因爲slice會返回一個全新的數組,而不是像'splice'那樣就地改變它。 – Abdulrahman
@Abdulrahman對不起,這是一個錯字。感謝您指出。我會嘗試子串作爲拼接不起作用的字符串。 – Chrillewoodz
@Abdulrahman與子字符串相同的結果。 – Chrillewoodz