2016-08-29 2 views
1

У меня есть этот маленький код прямо здесь:Angular2 маршрутизатор выполняет даже когда линии не называется

if (this._error.code == 0) { 
    localStorage.setItem('pinVouchers', JSON.stringify(this._filters.pin)); 
    $('.loading-wrapper').addClass('hidden'); 
    this._router.navigate(['/dashboard/voucher/list']); 
} 
else { 
    this._error.getErrorMessage(this._error.code); 
    $('.loading-wrapper').addClass('hidden'); 
    alert(this._error.message); 
} 

При отладке в браузере, если ошибка = 0, очевидно, выполняет часть кода в заявлении еще!. Однако после запуска предупреждения он переходит на страницу, указанную внутри оператора if. This._router.navigate (['/ dashboard/voucher/list']); ".

Я отлаживал весь файл ts, и я не могу найти, почему эта строка кода запускается, когда оператор if не является истинным.

Пожалуйста, помогите, спасибо!

EDIT

Вот весь код:

import { Component } from '@angular/core'; 
import { ROUTER_DIRECTIVES, Router } from '@angular/router'; 
import { CORE_DIRECTIVES, ControlGroup, FORM_DIRECTIVES, Control, FormBuilder, Validators } from '@angular/common'; 
import { Services } from '../../../services/services'; 
import { Filters } from '../../../model/Filters'; 
import { Error } from '../../../model/Error'; 

@Component({ 
    selector: 'voucher', 
    templateUrl: 'www/templates/voucher-template.html', 
    directives: [ CORE_DIRECTIVES, FORM_DIRECTIVES, ROUTER_DIRECTIVES ], 
    styleUrls: ['www/css/voucher.css'], 
    providers: [Services] 
}) 
export class voucher { 

    _PinVouchers: ControlGroup; 
    _filters: Filters; 
    _error: Error; 

    constructor(private services: Services, fb: FormBuilder, public _router: Router) { 
    this._error = new Error(); 
    this._filters = new Filters(); 
    fb = new FormBuilder(); 
    this._PinVouchers = fb.group({ 
      'pin': new Control(this._filters.pin) 
    }); 
    } 

    ngOnInit() { 
     $('.menu.active').removeClass("active"); 
     $('#vouchersMenu').addClass("active"); 
     $('.submenu.active').removeClass("active"); 
     localStorage.removeItem("pinVouchers"); 

     $(document).ready(() => { 
     $('#inputPin').keypress(function(key) { 
      if((key.charCode < 48 || key.charCode > 57) && (key.charCode < 97 || key.charCode > 122) && (key.charCode < 65 || key.charCode > 90) && (key.charCode != 45)) return false; 
     }); 
     }); 
    } 

    savePin(filters: Filters){ 
    $('.loading-wrapper').removeClass('hidden'); 

    this.services.getVisitsByPin(this._filters); 
    this._error.code = JSON.parse(sessionStorage.getItem('error')); 

    if (this._error.code == 0) { 
     localStorage.setItem('pinVouchers', JSON.stringify(this._filters.pin)); 
     $('.loading-wrapper').addClass('hidden'); 
     this._router.navigate(['/dashboard/voucher/list']); 
    } 
    else { 
     this._error.getErrorMessage(this._error.code); 
     $('.loading-wrapper').addClass('hidden'); 
     alert(this._error.message); 
    } 
    } 
} 
+0

, пожалуйста, отправьте еще один код, его неясно, когда выполняется этот фрагмент кода. похоже, он называется дважды, один раз с и во второй раз без кода ошибки ..?! выведите код ошибки перед этим if. – mxii

+0

Линия только один раз во всем файле. – mapl93

+0

Добавленный код не отображается при вызове метода savePin(). Когда вы это называете? Связано ли это с событием пользовательского интерфейса? Если да, то где? Ответ, вероятно, находится в шаблоне («www/templates/voucher-template.html»). Если функция вызывается в onclick() ссылки, вы должны понять, что ссылка будет по-прежнему перемещаться, если есть ошибка. –

ответ

0

Я только что видел ошибку, маршрутизатор также называют внутри тега привязки в шаблоне HTML.

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