Я не думаю, что можно пропустить state
через кнопку. Если мы проверим исходный код routerLink
, мы увидим ...
когда не a
тег:
@Directive({selector: ':not(a):not(area)[routerLink]'})
state
isnне включены в extras
:
@HostListener('click')
onClick(): boolean {
const extras = {
skipLocationChange: attrBoolValue(this.skipLocationChange),
replaceUrl: attrBoolValue(this.replaceUrl),
};
this.router.navigateByUrl(this.urlTree, extras);
return true;
}
source
, тогда как когда у нас есть тег a
:
@Directive({selector: 'a[routerLink],area[routerLink]'})
это включено:
@HostListener('click', [/** .... **/])
onClick(/** .... **/): boolean {
// .....
const extras = {
skipLocationChange: attrBoolValue(this.skipLocationChange),
replaceUrl: attrBoolValue(this.replaceUrl),
state: this.state // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< here!
};
this.router.navigateByUrl(this.urlTree, extras);
return false;
}
source
Таким образом, вы можете выбрать эту ссылку в виде кнопкиили затем вызовите функцию по нажатию кнопки, которая выполняет навигацию, как представлено в другом ответе, здесь я любезно ссылаюсь на этот код, отправленный AbolfazlR :
this.router.navigate(['home'], this.navExtra);