У меня есть объект соглашения, который я должен передать в качестве входных данных для дочернего компонента, идентификатор соглашения отображается, когда я вызываю его в дочернем шаблоне, но я получаю неопределенность, когда пытаюсь использовать свое соглашение в консоли. .журнал. Я попытался поместить свой console.log в конструктор дочернего элемента, а также в ngOnInit, ngAfterViewInit и ngOnChanges. Для ngOnChanges, когда я передаю только идентификатор соглашения в качестве входных данных для дочернего компонента, он работает нормально, но мне нужно передать соглашение, а не его идентификатор.
index.component.ts
@Component({
templateUrl: './index.template.html',
selector: 'be-convention-update',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ConventionUpdateComponent {
private convention$: Convention;
private conventionId: number;
constructor(private route: ActivatedRoute,
private conventionService: ConventionService) {
this.route.params.subscribe(
(params: any) => {
this.conventionId = params['id'];
this.conventionService.getOne(this.conventionId).subscribe(response => this.convention$ = response);
}
);
}
}
index.template.html
<be-form-convention [convention]="convention$"></be-form-convention>
form.component.ts
@Component({
selector: 'be-form-convention',
templateUrl: './form.template.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ConventionFormComponent implements OnChanges, OnInit {
@Input() convention: Convention;
constructor() {
}
public ngAfterViewInit() {
console.log(this.convention); //undefined
}
public ngOnInit(): void {
console.log(this.convention); //undefined
}
public ngOnChanges(changes: SimpleChanges): void {
const object: SimpleChange = changes.convention;
console.log('prev value: ', object.previousValue); //undefined
console.log('got name: ', object.currentValue); //undefined
}
}
Вы действительно получаете свой объект соглашения от вас ConventionService.getOne ?
Суффикс
$
кричит о наблюдаемом и «нуждается в асинхронном канале», но, по меньшей мере, неясно, что вы делаете и почему вы это делаете.@Orodan да, я получаю объект соглашения от своего сервиса
@AluanHaddad, ты прав, но это не связано с моей проблемой
Из того, что я вижу здесь, вы все делаете правильно, можете ли вы показать свой шаблон ConventionUpdateComponent и модель Convention, пожалуйста?
@Ородан, я изменяю свой вопрос