web-dave / angular-starter-v2

6 stars 3 forks source link

Guards #20

Open web-dave opened 7 years ago

web-dave commented 7 years ago
web-dave commented 7 years ago

generate

  ng g guard books/shared/leave
web-dave commented 7 years ago

leave.guard.ts


import { BookNewComponent } from './../book-new/book-new.component';
import { Injectable } from '@angular/core';
import { CanDeactivate } from '@angular/router';

@Injectable()
export class LeaveGuard implements CanDeactivate<BookNewComponent> {
 canDeactivate(target: BookNewComponent) {
   if (!target.isSaved()) {
     return window.confirm('Do you really want to cancel?');
   } else {
     return true;
   }
 }
}
web-dave commented 7 years ago

books-routing.module.ts


    {
      path: 'new',
      component: BookNewComponent,
      canDeactivate: [LeaveGuard]
    },
web-dave commented 7 years ago

book-new.component.ts



  isSaved() {
    return this.saved || !this.form.dirty;
  }