Salve persone di StackOverflow!Angolare 2: la variabile di input in Component non viene aggiornata una volta chiamata
Ho qualche problema con il mio codice. Come puoi vedere, voglio essere in grado di chiamare una riga con una larghezza impostata (formato bootstrap), poiché non voglio digitare la classe ogni volta.
Così ho pensato a un modo che è la seguente:
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));
}
Ma una volta che io chiamo il componente da un altro componente, non funziona nel modo desiderato.
<banner bannerHeight="300px"></banner> <!-- This works -->
<content rowWidth="6"></content> <!-- This doesn't -->
Se ho usato per esempio
<content [ngStyle]="{'color': 'black'}"></content>
l'operazione riesce. Le direttive e le importazioni sono impostate correttamente nel componente principale.
Quindi, ecco la mia domanda: come faccio a farlo funzionare nel modo in cui lo voglio?
Questo ha fatto il trucco! Ho completamente dimenticato i ganci del ciclo di vita ... errore da principiante. Quindi, come questo ha fatto il trucco per contentClass, sarebbe la migliore pratica implementare una cosa del genere per ogni variabile di input o solo quando vi è tempo di elaborazione speso su di esso (ad esempio un calcolo o una concatenazione)? – wuhkuh
Bene, se si desidera utilizzare l'input al momento dell'inizializzazione, quindi sì (che si desidera la maggior parte del tempo) è necessario un hook ciclo di vita. – lexith