2017-09-06 14 views
1

Angular2ネイティブスクリプトの新機能プログラミング...あるページを別のページに移動する必要があります。私はTypeError例外で立ち往生しています:plzは 私のコードが与えられます。..私を助けて "未定義のは( 'this.router' を評価)オブジェクトではありません" ..anguar2 nativescriptエラー "TypeError:未定義はオブジェクトではありません(this.router 'を評価しています)"

//page1.ts

public constructor(private router: Router) { } 
getMyDrawing(args) { 
    let pad = this.DrawingPad.nativeElement; 
    let img: Image = this.signImage.nativeElement; 
    let drawingImage; 
    pad.getDrawing().then 
    (
     (data) => { 
      console.log(data); 
      drawingImage = data; 
      img.src=data; 
      this.router.navigate(['page2']); 
     } 

    ); 
} 

//routing.ts

import { DrawingPadExample } from "./app.component"; 
import { Page2Component } from "./app.page2"; 

export const routes = [ 
    { path: "drawing-pad-example", component: DrawingPadExample}, 
    { path: "page2", component: Page2Component } 
]; 

export const navigatableComponents = [ 
DrawingPadExample, 
Page2Component 
]; 

//module.ts

import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core"; 
import { NativeScriptModule } from "nativescript- 
angular/nativescript.module"; 
import { DrawingPadExample } from "./app.component"; 
import { routes, navigatableComponents } from "./app.routing"; 
import { NativeScriptRouterModule } from "nativescript- 
angular/router"; 
@NgModule({ 
    bootstrap: [ 
     DrawingPadExample 
    ], 
    imports: [ 
     NativeScriptModule, 
     NativeScriptRouterModule, 
     NativeScriptRouterModule.forRoot(routes) 
    ], 
    declarations: [ 
     DrawingPadExample, 
     ...navigatableComponents 
    ], 
    schemas: [ 
     NO_ERRORS_SCHEMA 
    ] 
}) 
export class AppModule { } 
+0

ルータにそのコンポーネントを注入しましたか? – slesh

+0

@sleshあなたが意味するのは... _import {Router、NavigationExtras} "@ angle/router"; _ – JBR

答えて

0

@JBRは、いいえ、私はconstructoを使用して依存性注入を意味しますr、たとえば

constructor(private router: Router) {} 

この行をページ1のコンポーネントに追加します。

更新

ルータのコンストラクタでインスタンスを追加矢印機能を

(data) => { 
     console.log(data); 
     drawingImage = data; 
     img.src=data; 
     this.router.navigate(['page2']); 
    } 
+0

すべて準備完了!!! _publicコンストラクタ(プライベートルータ:ルータ){} _ – JBR

+0

エラーが存在します... – JBR

+0

私は答えを更新しました。あなたはこの文脈を維持するために、常に矢印機能を使用する必要があります。それ以外の場合は、このコンテキストに手動でバインドする必要があります。 – slesh

0

をこの

function(data) { 
     console.log(data); 
     drawingImage = data; 
     img.src=data; 
     this.router.navigate(['page2']); 
    } 

を交換してください。あなたはナビゲーションが動作していないと言うとき

constructor(private router : Router){} 

は、エラーが述べたようにtypeError:"undefined is not an object (evaluating 'this.router')"あなたはまだ

+0

すべて準備完了!!! – JBR

+0

スコープ変数 'this 'のエラーがある必要があります –

+0

関数宣言を矢印関数に置き換えようとしています。 –

1

をinitilizedされていない this.routerにアクセスしようとしているので、あなたはすべての何も起こらないんとエラーが発生しませんか?

コールバックをzoneCallbackに入れてみてください。

public constructor(private ngZone: NgZone, private router: Router){ 
} 

public getMyDrawing(args) { 
    let pad = this.DrawingPad.nativeElement; 
    let img: Image = this.signImage.nativeElement; 
    let drawingImage; 

    pad.getDrawing().then((data) => { 
     this.ngZone.run(() => { 
      console.log(data); 
      drawingImage = data; 
      img.src=data; 
      this.router.navigate(['page2']); 
     }); 
    }); 
} 
+0

これはなぜ必要なのですか? –

+0

特定のプロセスがAngularのchangeDetection戦略の外側で実行されているかどうか。 –

関連する問題