navigationend example change navigation typescript router alpha angular

navigation - example - router events angular 4



Angular 2 Router roto desde la versiĆ³n alpha 34 (1)

He estado jugando con Angular2 por bastante tiempo. Todo el código está desangrado y usa el último TypeScript Nightly 1.6 y Angular alpha 34. No puedo llamar al enrutador principal desde uno de los componentes. Por favor, ayúdame si es posible. Adjunto adjunto el código y el error en el intento de navegación.

aplicaciones

/// <reference path="../typings/angular2/angular2.d.ts" /> ''use strict''; import {Component, View, bootstrap} from ''angular2/angular2''; import {routerInjectables, RouterOutlet, RouteConfig} from ''angular2/router''; import {LoginApp} from ''./login/login''; import {DashboardApp} from ''./dashboard/dashboard''; // Annotation section @Component({ selector: ''inventman-app'' }) @View({ template: `<!-- The router-outlet displays the template for the current component based on the URL --> <router-outlet></router-outlet>`, directives: [RouterOutlet] }) @RouteConfig([ { path: ''/'', redirectTo: ''/login'' }, { path: ''/dashboard'', as: ''dashboard'', component: DashboardApp }, { path: ''/login'', as: ''login'', component: LoginApp } ]) // Component controller export class InventmanApp { constructor() { } } // bootstrap the Main App bootstrap(InventmanApp, [ routerInjectables ]);

login.ts

/// <reference path="../../typings/angular2/angular2.d.ts" /> ''use strict''; import {Component, View, formDirectives} from ''angular2/angular2''; import {Router} from ''angular2/router''; import {HttpService} from ''../../services/httpservice/httpservice''; @Component({ selector: ''login-app'' }) @View({ templateUrl: ''./jsts/components/login/login.html'', directives: [formDirectives], styleUrls: [''./jsts/components/login/login.css''] }) export class LoginApp { username: String; password: String; constructor(public router: Router) { } onSubmit() { const username = this.username, password = this.password; HttpService.serve(''https://'' + location.host + ''/userapi/sessions/create'', ''POST'', { ''Accept'': ''application/json'', ''Content-Type'': ''application/json'' }, JSON.stringify({ username, password })) .then(response=> { if (!response.id_token) { // Alerts the actual message received from the server alert(response.message); // Removes any previous assigned JWT to ensure tighter security localStorage.removeItem(''jwt''); } else { // Valid Login attempt -> Assign a jwt to the localStorage localStorage.setItem(''jwt'', response.id_token); // route to the dashboard this.router.parent.navigate(''/dashboard''); } }); } }

Error

EXCEPCIÓN: TypeError: No se puede leer la propiedad ''parent'' de undefined angular2.dev.js: 22448 STACKTRACE: angular2.dev.js: 22448 TypeError: No se puede leer la propiedad ''parent'' de undefined en eval (login.js: 34) en Zone. run (angular2.dev.js: 136) en Zone.execute. $ __ 3._createInnerZone.zone.fork.fork. $ run [as run] (angular2.dev.js: 16437) en zoneBoundFn (angular2.dev.js: 109) en lib $ es6 $ promise $$ internal $$ tryCatch (angular2.dev.js: 1359) en lib $ es6 $ promise $$ interna $$ invokeCallback (angular2.dev.js: 1371) en lib $ es6 $ promise $$ interno $$ publish (angular2.dev.js: 1342) en angular2.dev.js: 187 en Zone.run (angular2.dev.js: 136) en zoneBoundFn (angular2.dev.js: 109)


La respuesta a la pregunta es bastante simple. De alguna manera, el nuevo compilador de tipografía beta mientras se ejecuta desde cli parece evitar por completo la DI de angular. La compilación del complemento IDE (Sublime 3) parece haber solucionado el problema.

He mejorado aún más el código y debería llevarlo a GIT con capturas de pantalla pronto para referencia de otros y para jugar.