Sto provando a configurare la mia prima applicazione angular2 come esperimento e sto utilizzando l'ultima versione beta.Angolare2, visualizzazione non aggiornata dopo variazioni variabili in settimeout
Sono di fronte a un problema strano in cui la variabile che sto usando nella mia vista non viene aggiornata dopo aver impostato un timeout.
@Component({
selector: "my-app",
bindings: []
})
@View({
templateUrl: "templates/main.component.html",
styleUrls: ['styles/out/components/main.component.css']
})
export class MainComponent {
public test2 = "initial text";
constructor() {
setTimeout(() => {
this.test2 = "updated text";
}, 500);
}
}
Come potete vedere ho un test2 variabile denominata e nel costruttore ho impostato un timeout di 500 ms in cui sto aggiornando il valore su "aggiornato testo".
Poi a mio avviso main.component.html ho semplicemente utilizzare:
{{ test2 }}
Ma il valore non sarà mai essere impostato su "testo aggiornato" e rimane in "testo iniziale" per sempre anche se la parte di aggiornamento è essere colpito. Se seguo il tutorial angular2, non mi danno davvero una risposta a questa soluzione. Mi stavo chiedendo se qualcuno avrebbe avuto un'idea di quello che mi manca qui.
edit: il mio pieno codice che sto usando compreso il bootstrap e html ecc
<html>
<head>
<title>Angular 2</title>
<script src="/node_modules/systemjs/dist/system.src.js"></script>
<script src="/node_modules/reflect-metadata/reflect.js"></script>
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="/node_modules/q/q.js"></script>
<script src="/node_modules/jquery/dist/jquery.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="/bower_components/breeze-client/breeze.debug.js"></script>
<script src="/bower_components/datajs/datajs.js"></script>
<script src="/bower_components/bootstrap-less/js/collapse.js"></script>
<script src="/bower_components/bootstrap-less/js/modal.js"></script>
<script src="/bower_components/signalr/jquery.signalR.js"></script>
<script src="http://localhost:64371/signalr/js"></script>
<link href="styles/out/main.css" type="text/css" rel="stylesheet" />
<script>
System.config({
map: {
rxjs: '/node_modules/rxjs' // added this map section
},
packages: {'scripts/out': {defaultExtension: 'js'}, 'rxjs': {defaultExtension: 'js'}}
});
System.import('scripts/out/main');
</script>
</head>
<body>
<my-app>loading...</my-app>
</body>
</html>
main.ts con il bootstrap:
import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser'
import {COMMON_DIRECTIVES} from './constants';
import {MainComponent} from './components/main.component'
bootstrap(MainComponent);
principale component.html
{{ test2 }}
Ho appena ricostruito la tua app angular2 minima, ma ottengo il risultato del testo aggiornato. C'è qualche errore nella console? In caso contrario, puoi dare più codice? Come il tuo 'index.html', 'main.component.html' e dove si avvia l'app – PierreDuc
Questo lo ha risolto per me http://stackoverflow.com/a/41724333/1197775 – juanpastas