angular - 如何根据来源点击在同一页面上过滤我的数据
问题描述
在我的数据库中,我有一个具有特定来源的名称列表。在我的导航栏中,我有每个来源的链接。我是角度新手,我的第一种方法是为每个来源创建一个“页面”。我的问题是:这样做有什么捷径吗?喜欢:点击链接A,我将进入页面,我有原产地A列表。点击链接B,我仍然在同一页面上,但我有一个列表产地乙...
每个原点的控制器 laravel(原点 1,2,3 ...)
public function index()
{
$identity = name::orderBy('name')->where('origin_link', 1)->get();
return response()->json($identity);
}
html angular(每个来源的页面完全相同)
<div class="ci">
<div class="container">
<ul *ngFor="let name of names">
<li><a role="button">{{name.name}}</a></li>
</ul>
</div>
</div>
html为链接
<div class="dropdown-menu">
<a class="dropdown-item" routerLink="names">origin 1</a>
<a class="dropdown-item" routerLink="names1">origin 2</a>
<a class="dropdown-item" routerLink="names2">origin 3</a>
<a class="dropdown-item" routerLink="names3">origin 4</a>
</div>
ts(现在,他得到了所有的列表)
export class NamesComponent implements OnInit {
public names: string;
constructor(public namesService: NamesService
) { }
ngOnInit() {
this.namesService.index().subscribe((data:any) => {
this.names= data;
})
}
服务
index(): Observable<any> {
return this.http.get(this.apiUrl + '/names');
}
解决方案
如果您想要每个来源的页面,我建议您使用 Route Parameters 。你应该改变那条路线:
const routes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'names/:id', component: NamesComponent },
{ path: '', redirectTo: '/home', pathMatch: 'full' },
]
并更改路由器链接:
<div class="dropdown-menu">
<a class="dropdown-item" [routerLink]="['/names',1]">origin 1</a>
<a class="dropdown-item" [routerLink]="['/names',2]">origin 2</a>
<a class="dropdown-item" [routerLink]="['/names',3]">origin 3</a>
<a class="dropdown-item" [routerLink]="['/names',4]">origin 4</a>
</div>
在您的 NamesComponent 中,您应该检查加载数据的参数:
id: string
constructor(private route: ActivatedRoute) {}
ngOnInit(){
this.id = this.route.snapshot.paramMap.get('id')
}
推荐阅读
- jquery - 我想用 SLICK 滑块实现下图所示的幻灯片设计
- laravel - 我将如何在 laravel eloquent 的急切加载中加入条件
- mysql - Mysql:如何在自动增量列中的每个增量号上设置间隙 5 的数量?
- flutter - `颤振医生`报告错误`Android工具链-为Android设备开发`
- python-3.x - 无法在亚马逊中提取商品标题
- python - pyqt5.14 支持 Markdown 吗?
- linux - 使用 awk 比较两个文件并打印不匹配的记录
- html - 尝试使用下拉菜单更改渐变背景
- html - 使用正确的单位获取元素宽度
- angular - 我指的是“angular.json”中“node_modules”中的“bootstrap”但是当我用一个例子来做的时候,这些样式并不适用