Hallo Leute von StackOverflow!Angular 2: Eingangsvariable in Component aktualisiert nicht einmal aufgerufen
Ich habe Probleme mit meinem Code. Wie Sie sehen können, möchte ich in der Lage sein, eine Zeile mit einer festgelegten Breite (Bootstrap-Format) aufzurufen, da ich die Klasse nicht jedes Mal eingeben möchte. So
Ich dachte an eine Art und Weise, die ist die folgende:
import { Component, Input } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'content',
template: ` <div class="row">
<div [ngClass]="contentClass"
id="content"
[ngStyle]="{ 'color': 'black', 'font-size': '20px' }">
<ng-content></ng-content>
</div>
</div>`,
styleUrls: ['content.stylesheet.css']
})
export class ContentComponent {
@Input() rowWidth = "12";
contentClass=(("col-lg-" + this.rowWidth)+(" col-sm-" + this.rowWidth)+(" col-xs-" + this.rowWidth));
}
Aber sobald ich die Komponente aus einer anderen Komponente aufrufen, es funktioniert nicht so, wie ich will.
<banner bannerHeight="300px"></banner> <!-- This works -->
<content rowWidth="6"></content> <!-- This doesn't -->
Wenn ich zum Beispiel verwendet
<content [ngStyle]="{'color': 'black'}"></content>
die Operation erfolgreich. Die Anweisungen und Importe sind in der übergeordneten Komponente korrekt festgelegt.
Also hier ist meine Frage: Wie kann ich es so machen, wie ich es will?
Das hat den Trick! Ich habe die Lebenszyklus-Haken total vergessen. Anfängerfehler. Wie wäre es mit dem Trick für die contentClass, wäre es die beste Vorgehensweise, ein solches Ding für jede Eingabevariable zu implementieren oder nur dann, wenn Verarbeitungszeit dafür aufgewendet wird (z. B. eine Berechnung oder Verkettung)? – wuhkuh
Nun, wenn Sie Ihre Eingabe zum Zeitpunkt der Initialisierung verwenden möchten, dann ja (was Sie die meiste Zeit wünschen) benötigen Sie einen Lebenszyklus-Hook. – lexith