2017-01-09 2 views
0

Я работаю над очень простым штрих-кодовым сканером и имею некоторые проблемы, связанные с представлением с контроллера. В моем app.component.ts в функции ngOnInit() я проверяю, был ли локальный IP-адрес сохранен в настройках приложения, и если он не был установлен, приложение должно входить в представление настроек, где может быть установлен IP-адрес. Когда я использую [nsRouterLink] для перехода к представлению настроек, он отлично работает, но я, похоже, не в состоянии сделать это программно ... Любая идея, что я делаю неправильно?Angular2/Nativescript: не удается запрограммировать представление из контроллера компонента

app.component.ts: 

    import { Component, OnInit } from "@angular/core"; 
    import { Router } from '@angular/router'; 
    import { RestService } from './services/rest.service'; 
    import { AppSettingsService } from './services/app-settings.service'; 


    @Component({ 
     selector: "main", 
     template : "<page-router-outlet></page-router-outlet>" 
    }) 
    export class AppComponent implements OnInit { 

     constructor(private restService: RestService, private appSettingsService: AppSettingsService, private router: Router) { 

     } 

     ngOnInit() { 

     let ip = this.appSettingsService.findLocalIP(); 
     if (ip !== null) { 
      this.restService.init(ip); 
     } else if (ip === null) { 
      console.log("ip: " + ip); 
      this.router.navigate(['settings']); 
     } 

    } 

    } 

app.routing.ts: 

import { AppComponent } from './app.component'; 
import { HomeComponent } from './pages/home/home.component'; 
import { CheckBarcodesComponent } from './pages/check-barcodes/check-barcodes.component'; 
import { SettingsComponent } from './pages/settings/settings.component'; 

export const routes = [ 
    {path: "", component: HomeComponent}, 
     {path: "checkBarcodes", component: CheckBarcodesComponent}, 
      {path: "settings", component: SettingsComponent} 
]; 

export const navigatableComponents = [ 
HomeComponent, 
CheckBarcodesComponent, 
SettingsComponent 
]; 
+0

ли ваш 'console.log ("IP:" + ф);' дозвонились? – Peza

+0

@Peza да, он регистрируется как null каждый раз. – user2094257

ответ

1

Полное редактирование моего вопроса. Кажется, я нашел твою проблему сейчас. Проблема, скорее всего, в том, что вы пытаетесь перейти с AppComponent, где у вас есть маршрутизаторы. Поэтому ngOnInit уволен, но не навигатор.

Ну ... OP нашел только сейчас из раствора, как я писал этот пост ...: D

+0

IP-адрес регистрируется как null в командной строке Windows каждый раз ... – user2094257

+0

О, ладно, я неправильно понял, так что вы дошли до того, навигации, но это не работает? Можем ли мы увидеть ваш модуль маршрутизации? И скажите нам, откуда вы пытаетесь перейти на настройки :) – Alex

+0

Я только что добавил свой компонент маршрутизации. Я пытаюсь перейти к настройкам, как только возможно, когда приложение запустится, если IP не был установлен. Я могу перейти к настройкам с помощью [nsRouterLink] из xml, поэтому я предполагаю, что проблема связана не с компонентом маршрутизации ... – user2094257

0

Есть некоторая разница в реализации маршрута между угловыми и nativescript. Вместо импорта углового маршрута, вы должны импортировать из nativescript маршрута

import { RouterExtensions, PageRoute } from "nativescript-angular/router"; 

на конструктору

constructor(private router: RouterExtensions) { 
} 

попробуйте этот

this.router.navigate(['settings']); 
+0

У меня было так, как раньше, и это не сработало. Просто изменил его, чтобы снова использовать RouterExtensions, но он по-прежнему не перемещается ... – user2094257

Смежные вопросы