Сбросить выбранное значение - PullRequest
0 голосов
/ 05 марта 2020

Я сделал динамический выбор c, когда вы выбираете значение из первого выбора, он устанавливает параметры второго.

Html:

<select clrSelect name="reviewerTypes" (change)="onChange(currentReviewerType)" 
[(ngModel)]="currentReviewerType">
    <option [value]="" selected disabled hidden>Choose value</option>
    <option *ngFor="let reviewType of reviewerTypes" [ngValue]="reviewType">
        {{reviewType.reviewType}}
    </option>
</select>
<select clrSelect name="options" [(ngModel)]="currentReviewer">
    <option value="" selected disabled hidden>Choose value</option>
    <option *ngFor="let reviewer of reviewers" [ngValue]="reviewer">                     
        {{reviewer.user}}
    </option>
</select>

TS:

onChange(selection){
    let reviewerId = selection;
    console.log(selection)
    this.dataService.GetReviewersByType(reviewerId.id).subscribe( response => 
        this.reviewers = response, error => console.log(error));
}

addReviewer(){
    console.log(this.currentReviewer)
    let reviewerToAdd = {reviewerType:this.currentReviewerType, 
        reviewer:this.currentReviewer}
    this.reviewersAdded.push(reviewerToAdd)
    console.log(this.reviewersAdded)
}

и работает просто отлично, каждый раз, когда я изменяю значение первого выбора, оно меняет значение со второго.

Моя проблема в том, что второй , когда он изменяется, на дисплее изменяются значения, и кажется, что первое выбрано, но оно сохраняет значение последнего, если я не выберу другое вручную.

Пример

Первый выбирает value="1", поэтому второй отображает options={"a", "b", "c"} и позволяет предположить, что я выбрал value="b".

Затем я изменяю значение первый до value="2", затем второй меняется на options={"d", "e", "f"}, но он сразу же отображается, так как я выбрал value="d" хотя бы визуально, как кажется.

Если это значение, которое я хочу, то я нажму кнопку отправки, но когда я сделаю console.log() со значением, которое оно показывает мне, что второй имеет value="b", который я выбрал в начале.

Если я хочу value="d", я должен выбрать другой, а затем выбрать тот.

Есть ли способ сбросить выбор, чтобы он выбирал значение по умолчанию каждый раз, когда он изменяет значения? или у тебя есть другие идеи по этой проблеме?

1 Ответ

0 голосов
/ 05 марта 2020

Хорошо, как я решил, это присвоение значения в onChange(selection)

onChange(selection){
    let reviewerId = selection;
    this.dataService.GetReviewersByType(reviewerId.id).subscribe( (response)=> {
      this.reviewers = response
      this.currentReviewer = response[0]  //////this is the line I added
    }, 
    error => console.log(error));
}

addReviewer(){
    console.log(this.currentReviewer)
    let reviewerToAdd = {reviewerType:this.currentReviewerType, 
        reviewer:this.currentReviewer}
    this.reviewersAdded.push(reviewerToAdd)
    console.log(this.reviewersAdded)
}

Но я не знаю, есть ли лучший способ

...