2016-11-24 22 views
9

Nếu tôi có biểu mẫu trong chế độ xem (Góc). Khi người dùng cố gắng điều hướng khỏi đó và tôi muốn thông báo xác nhận xuất hiện. Làm thế nào tôi có thể làm điều đó?Góc: Ngăn thay đổi tuyến đường nếu có bất kỳ thay đổi nào được thực hiện trong chế độ xem

+3

Chào mừng bạn đến StackOverflow. Một câu hỏi nên chứa mã chứng minh những gì bạn cố gắng thực hiện, những gì bạn đã thử và nơi bạn đã thất bại. SO không phải là một cộng đồng khỉ mã ;-) –

Trả lời

12

Bạn có thể thực hiện canDeactivate sử dụng nguyên cảo như

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

Chính xác những gì tôi đã tìm kiếm. Cảm ơn :) – Abraham

+0

@Abraham đã làm mã ở trên hoạt động được không? – AngularM

3

CanDeactivate có thể được sử dụng cho điều đó. Bạn cần chuyển trạng thái đến dịch vụ có thể truy cập được canDeactivate.

Các vấn đề liên quan