【发布时间】:2019-04-12 04:26:51
【问题描述】:
我在我的共享模块中创建了一个组件,它是标题组件,所以在我的所有组件中我都想调用它。
在我的共享组件中,我们称之为 app-header 组件,我想接受输入 Title: string, buttonName: string 和 buttonLink: any (因为我很困惑) 我的组件:
import { Component, OnInit, Input } from '@angular/core';
import { RouterLink } from '@angular/router';
@Component({
selector: 'app-app-header',
templateUrl: './app-header.component.html',
styleUrls: ['./app-header.component.less']
})
export class AppHeaderComponent implements OnInit {
@Input() title: string;
@Input() buttonName: string;
@Input() buttonLink: any;
constructor() { }
ngOnInit() {
}
}
我的 app.header.html
<div class='row border-bottom my-4 align-middle apptitle'>
<div class="col-8 my-2">
<div>
<h3> {{title}}</h3>
</div>
</div>
<div class="col-4 my-2 text-right">
<button class="btn btn-primary pull-right" [routerLink]={{buttonLink}}>{{buttonName}}</button>
</div>
</div>
我通过在我的其他组件中使用这个组件:
我的共享模块:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedComponent } from './shared.component';
import { AppHeaderComponent } from './app-header/app-header.component';
@NgModule({
imports: [
CommonModule,
],
providers: [],
declarations: [
SharedComponent,
AppHeaderComponent],
exports:[
AppHeaderComponent,
]
})
export class SharedModule { }
我的问题是我不知道如何传递链接,因此 routerlink 将起作用。 知道如何以正确的方式传递链接/路由器链接吗?路由属于调用它的组件的模块。
我有许多延迟加载的模块将使用这个共享组件。所以我猜路由应该能够从它的调用者组件模块重定向/调用链接。
已编辑:添加更多信息
共享模块:AppHeaderComponent(这没有路由)
AdminModule: AdminComponent -> 在里面调用AppHeaderComponent(AdminModule有Routes)
UserMoudule: UserComponent -> 在里面调用AppHeaderComponent(UserModule有Routes)
我需要 AppHeaderComponent 链接到正确的 routeLink。
示例: 在用户组件中:
<app-app-header
[title]= "'Users'"
[buttonName]="'Create New'"
[buttonLink]="['/user/create']"
></app-app-header>
【问题讨论】:
-
您的
HeaderComponent中是否只有一个链接?还是您要在这里创建的HeaderLinkComponent?并且您想使用HeaderComponent本身创建多个? -
请同时添加您在模板中使用
AppHeaderComponent的具体实现方式。 -
我添加了上面的用法。 UserModule 中的用户,SharedModule 中的 AppHeaderComponent。