У меня есть этот маленький код прямо здесь: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);
}
}
}
, пожалуйста, отправьте еще один код, его неясно, когда выполняется этот фрагмент кода. похоже, он называется дважды, один раз с и во второй раз без кода ошибки ..?! выведите код ошибки перед этим if. – mxii
Линия только один раз во всем файле. – mapl93
Добавленный код не отображается при вызове метода savePin(). Когда вы это называете? Связано ли это с событием пользовательского интерфейса? Если да, то где? Ответ, вероятно, находится в шаблоне («www/templates/voucher-template.html»). Если функция вызывается в onclick() ссылки, вы должны понять, что ссылка будет по-прежнему перемещаться, если есть ошибка. –