Как показать ошибку ошибки, когда текстовое поле загрязнено и находится в фокусе?

Оператор if останавливается, как только он встречает действительный оператор.

Не нужно, если здесь, вы можете просто вставить входные значения вместе:

library(shiny) 
server <- shinyServer( function(input, output) {
  output$whatever<-renderText( {
    vals <- paste(input$test, collapse = " ")
    paste("Your ideal(s) value(s) are", vals)

  }
  )
}

)

ui <- shinyUI(fluidPage(
  headerPanel(title="pratice"),
  sidebarLayout(
    sidebarPanel(
      selectInput("test",label="Test",multiple = TRUE, 
                  choices=list("a","b","c","d"), 
      )),
    mainPanel(
      textOutput("whatever")
    )
  )
)
)

shinyApp(ui, server)
1
задан Tasnim Fabiha 20 January 2019 в 09:27
поделиться

3 ответа

Это будет применять новый сопоставитель ко всему вашему приложению:

dirty-error-state.matcher.ts

import {FormControl, FormGroupDirective, NgForm } from '@angular/forms';
import {ErrorStateMatcher} from '@angular/material/core';

export class DirtyErrorStateMatcher implements ErrorStateMatcher {
    isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
        return !!(control && control.invalid && (control.dirty));
    }
}

app.module.ts

import { DirtyErrorStateMatcher } from 'your-path-here';
import { ErrorStateMatcher } from '@angular/material/core';

@NgModule({
...
  providers: [{
    provide: ErrorStateMatcher,
    useClass: DirtyErrorStateMatcher
  }]
})
0
ответ дан Christian 20 January 2019 в 09:27
поделиться

вы можете сделать это следующим образом -

<mat-form-field appearance="outline">
  <mat-label>Password</mat-label>
  <input matInput 
        type="password"
        placeholder="Password"
        name='Password'
        [ngModel]='model.password'
        (ngModelChange)="onChange($event, password)"
        #password='ngModel'
        [minlength]='requiredLength'
        [pattern]="passwordPattern"
        required>
  <mat-error *ngIf="password.errors?.pattern"">
      Password must be 8 characters long, one numeric, one special character....
  </mat-error>
</mat-form-field>

и в вашем component.ts добавить метод onChange () -

onChange($event, password){
    this.model.password = $event;
    if(!password.control.touched){
      password.control.markAsTouched();
    }
}
0
ответ дан Sadid Khan 20 January 2019 в 09:27
поделиться

Если вы хотите запускать валидацию при каждом нажатии клавиши пользователем, вы должны использовать небольшой обходной путь. Я предлагаю вам использовать FormControl, который затем позволит вам установить валидатор непосредственно на этом элементе управления, а также прослушать изменения, испускаемые valueChanges, чтобы пометить FormControl как затронутые для запуска проверки (возможно, есть лучший решение этого?).

См. Следующий стекблиц . Валидация выполняется с помощью Validators.pattern (минимум 8 символов, как минимум одна буква, одно число и один специальный символ), поэтому больше не требуется обязательный или минимальный валидатор длины.

0
ответ дан Fabian Küng 20 January 2019 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: