Почему MatDialog потерял внедренный сервис внутри метода? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть select-autocomplete на странице диалога, и на первом шаге пользователь выбирает значение.
В зависимости от этого результата выбора я должен создать разные входные группы.

Когда пользователь заполняет этот select-autocomplete, я должен перейти на сервер с сервисом, чтобы получать данные о том, какую входную группу я должен создать в диалоговом окне.
Но внедрение сервиса теряется после заполнения автозаполнения.
В getProp метод dictionaryService равен undefined.

Как связать dictionaryService с PropertiesDialogComponent для доступа к сервису внутри getProps метода?

export class PropertiesDialogComponent implements OnInit {

  constructor(public dialogRef: MatDialogRef<PropertiesComponent>,
              public dictionaryService: DictionaryRequestService,
              @Inject(MAT_DIALOG_DATA) public data: any) {
    // in this moment dictionaryService is ok.
  }

  getProps(searchValue: string): Observable<EntityIdTitle[]>  {
    debugger
    return this.getSearch(searchValue)
      .pipe(
        map((dicts: DictionaryItemsSearch[]) => 
            dicts.map(i => ({id: i.id, title: i.title})))
      );
  }
}

<h2 matDialogTitle class="mb-3">Add</h2>
<div matDialogContent>
  <form>
    <div class="form-container">
      <app-select-autocomplete
        [multiple]="false"
        [placeholder]="'property'"
        [getOptions]="getProps">
      </app-select-autocomplete>
      </div>
    </div>
    // Create more inputs depend on app-select-autocompleteresult
  </form>
</div>

PS app-select-autocomplete - это черный ящик, его огромный компонент. Я не знаю эту работу, он корректно работает в других местах с такими же параметрами.

...