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: ##.##.##.##
 })

Relaterade artiklar