Angular 将指令传递给子元素
Angular passing directive to child element
我正在为我的 Angular 应用构建一个导航栏,我决定制作一个 nav-item
组件来包含导航栏内的链接。我希望能够将 routerLink
指令传递给它,并将该指令传递给 nav-item
组件中的 a
元素。
我的 nav-item
组件看起来像这样。
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
@Component({
selector: 'nav-item',
template: `
<li><a>
<ng-content #wrapper></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@ViewChild('wrapper') content: ElementRef;
constructor() { }
ngOnInit(): void {
}
}
我希望能够像这样使用 nav-item
组件。
<nav-item routerLink="/login">Login</nav-item>
是否有任何方法可以将 routerLink
指令从 nav-item
组件传递到其 a
元素?提前致谢。
可能我误解了你的问题。但是你可以这样做
@Component({
selector: 'nav-item',
template: `
<li><a>
<ng-content #wrapper></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@ViewChild('wrapper') content: ElementRef;
@Input('link') link: string;
constructor() { }
ngOnInit(): void {
//Inject router on constructor
this.rourter.navigate(link)
}
}
然后你打电话给
<nav-item link="/login">Login</nav-item>
这应该也可以,它应该支持传递字符串 link 或 URL 树。
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'nav-item',
template: `
<li><a [routerLink]="routerLink">
<ng-content></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@Input() routerLink: string | any[];
constructor() { }
ngOnInit(): void {
}
}
附带说明一下,除非您绝对需要 ElementRef,否则出于安全原因不应使用它。请在此处阅读相关说明:https://angular.io/api/core/ElementRef
我正在为我的 Angular 应用构建一个导航栏,我决定制作一个 nav-item
组件来包含导航栏内的链接。我希望能够将 routerLink
指令传递给它,并将该指令传递给 nav-item
组件中的 a
元素。
我的 nav-item
组件看起来像这样。
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
@Component({
selector: 'nav-item',
template: `
<li><a>
<ng-content #wrapper></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@ViewChild('wrapper') content: ElementRef;
constructor() { }
ngOnInit(): void {
}
}
我希望能够像这样使用 nav-item
组件。
<nav-item routerLink="/login">Login</nav-item>
是否有任何方法可以将 routerLink
指令从 nav-item
组件传递到其 a
元素?提前致谢。
可能我误解了你的问题。但是你可以这样做
@Component({
selector: 'nav-item',
template: `
<li><a>
<ng-content #wrapper></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@ViewChild('wrapper') content: ElementRef;
@Input('link') link: string;
constructor() { }
ngOnInit(): void {
//Inject router on constructor
this.rourter.navigate(link)
}
}
然后你打电话给
<nav-item link="/login">Login</nav-item>
这应该也可以,它应该支持传递字符串 link 或 URL 树。
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'nav-item',
template: `
<li><a [routerLink]="routerLink">
<ng-content></ng-content>
</a></li>
`
})
export class NavItemComponent implements OnInit {
@Input() routerLink: string | any[];
constructor() { }
ngOnInit(): void {
}
}
附带说明一下,除非您绝对需要 ElementRef,否则出于安全原因不应使用它。请在此处阅读相关说明:https://angular.io/api/core/ElementRef