Угловой 6: использовать значение @Input в ngOnInit - PullRequest
0 голосов
/ 14 февраля 2019

Я хотел бы получить значение модели автомобиля с помощью входных данных, но я не уверен, как это работает.Вот что я пробовал.

@Input() model : Car
car: Car;

    ngOnInit() {
        this.car= this.carService.getcar(model.id);
      }

Модель, к сожалению, всегда пуста. Как я могу это сделать?

РЕДАКТИРОВАТЬ: родительский HTML

 <app-model
        [model]="car">
  </app-model>

PARENT ts file

ngOnInit{
  this.shopService.get()
        .pipe(
          take(1),
          finalize(() => {
                    })
              )
         .subscribe(result => {
              this.car = result;
              });
          })
        )
 }

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

В HTML другого компонента

<app-detail-component [model]="{id: 1, name: 'Carname'}"></app-detail-component>

В файле .ts описанного вами компонента (я предположил, что имя компонента - DetailComponent.ts)

@Input() model: Car;
car: Car;

ngOnInit() {
     this.car= this.carService.getcar(model.id);
}

Ссылка наофициальная документация: https://angular.io/guide/component-interaction

0 голосов
/ 14 февраля 2019

model пусто, поскольку переменная car в родительском компоненте назначается после вызова ngOnInit в дочернем компоненте.Вам нужно вызвать метод carService в ngOnChanges, а не ngOnInit.

@Input() model: Car
car: Car;

ngOnChanges() {
  this.car = this.carService.getcar(model.id);
}
0 голосов
/ 14 февраля 2019

Вы должны использовать @Input() (с скобками)

...