typescript - Angular 5 mönstervalidering fungerar inte med dynamiska reaktiva formulär
Jag försöker uppnå fältvalidering med Angular reaktiva formulär med regex-mönstret ##.##.##.##. För vissa mönster fungerar det inte. Jag testade nedanstående inmatning 12.25.36.25 som misslyckades med valideringen, testade mönstret (^\d{2}.\d{2}.\d{2}.\d{2}$) med regextester och det fungerar bra. Jag är inte säker på vad som går fel här. All hjälp uppskattas.
Här är StackBlitz.
Svar #1
Anledningen är att du glömde lägga till ett fält i klassens frågebas som heter pattern. Här är koden:
export class QuestionBase<T> {
...
pattern: string;
constructor(options: {
...
pattern?: string
} = {}) {
...
this.pattern = options.pattern || null
}
}
Ett annat problem är att ##.##.##.## inte är ett giltigt nummer. Du behöver ändra det inmatningsfältet så att det är av typen text. Slutligen, om ditt mönster är ett reguljärt uttryck behöver du använda javascripts regex-typ istället för sträng. Ersätt ditt mönster med /^\d{2}.\d{2}.\d{2}.\d{2}$/
Redigera: Den slutliga formen av modellen bör vara:
new TextboxQuestion({
key: 'version',
label: 'Release Number',
type: 'text',
required: true,
order: 4,
pattern: /^\d{2}.\d{2}.\d{2}.\d{2}$/ // needed format: ##.##.##.##
})
