2016-11-24 7 views
9

フォームにビュー(角度)がある場合。ユーザーがそこから離れようとすると、確認メッセージが表示されます。どうやってやるの?角度:ビューに変更が加えられた場合はルート変更を防止します

+3

ようtypescriptですを使用してcanDeactivateを実装することができますがStackOverflowのへようこそ。質問には、達成しようとするもの、試したこと、失敗した場所を示すコードが含まれている必要があります。 SOはコードサルのコミュニティではありません;-) –

答えて

12

あなたは

import {Injectable, Inject} from '@angular/core'; 
 
import { CanDeactivate } from '@angular/router'; 
 
import {ViewthatyouwantGuard} from './path to your view'; 
 

 
@Injectable() 
 
export class ConfirmDeactivateGuard implements CanDeactivate<ViewthatyouwantGuard> { 
 
    
 
    canDeactivate(target: ViewthatyouwantGuard) { 
 
     if (target.hasChanges) { 
 
      return window.confirm('Do you really want to cancel?'); 
 
     } 
 
     return true; 
 
    } 
 

 
} 
 

 
//hasChanges - function in 'ViewthatyouwantGuard' which will return true or false based on unsaved changes 
 

 
and in your routing file provide root like 
 

 
{path:'rootPath/', component: ViewthatyouwantGuard, canDeactivate:[ConfirmDeactivateGuard]},

+0

まさに私が探していたものです。ありがとう:) – Abraham

+0

@Abrahamは上記のコード作業を大丈夫でしたか? – AngularM

3

CanDeactivateを使用できます。 canDeactivateにアクセス可能なサービスにステータスを渡す必要があります。

関連する問題