У меня есть простая структура компонентов, где у меня есть угловой компонент с именем gameplay
, внутри которого находится дочерний компонент с именем question-box
.Цель состоит в том, чтобы извлечь простую строку через бэкэнд-сервис в игровом процессе (который работает нормально) и передать эту строку в question-box
для отображения (что не работает).
Вот мой код:
gameplay.component.ts:
import { Component, OnInit, OnChanges } from '@angular/core';
import { QuestionsService } from '../services/questions.service';
@Component({
selector: 'app-gameplay',
templateUrl: './gameplay.component.html',
styleUrls: ['./gameplay.component.css'],
})
export class GameplayComponent implements OnInit {
constructor(private qService: QuestionsService) {
}
currentQuestion: string;
ngOnInit() {
this.qService.getQuestions().subscribe({
next(data) {
this.currentQuestion = data[0].question;
console.log(this.currentQuestion); //logs correctly
},
complete() { console.log('Done')},
error() { console.log('Error')},
})
}
}
gameplay.component.html:
<app-question-box [question]="currentQuestion"></app-question-box>
question-box.component.ts
import { Component, OnInit, Input, OnChanges, SimpleChange } from '@angular/core';
@Component({
selector: 'app-question-box',
templateUrl: './question-box.component.html',
styleUrls: ['./question-box.component.css']
})
export class QuestionBoxComponent implements OnInit {
@Input() question: string;
constructor() {
}
ngOnInit() {
}
}
question-box.component.html
<mat-card md-colors="{background: 'orange'}">
<mat-card-content>
<p>{{question}} </p>
</mat-card-content>
</mat-card>
Я попытался использовать асинхронный канал в шаблоне, но он не сработал.Я ожидаю увидеть строку, которую я получил в next()
в <p>
ребенка;но я ничего не вижуОднако строка правильно регистрируется в консоли.
Любая помощь будет принята с благодарностью.Пожалуйста, дайте мне знать, если я пропустил некоторую информацию, необходимую для поиска решения.Спасибо.