Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angular中使用routerLink进行api请求?_Angular_Angular Routing_Angular Routerlink - Fatal编程技术网

如何在angular中使用routerLink进行api请求?

如何在angular中使用routerLink进行api请求?,angular,angular-routing,angular-routerlink,Angular,Angular Routing,Angular Routerlink,我正在angular cli 11中通过音乐组创建一个应用程序,我的路由存在以下问题: 在数据库中,我有一个名为“members”的表,其中包含他们的所有信息。 在导航栏中,有一个下拉列表,其中显示成员: 这是menu.component.html的代码部分: <li *ngFor="let member of members"> <a class="dropdown-item js-scroll-trigger" routerL

我正在angular cli 11中通过音乐组创建一个应用程序,我的路由存在以下问题:

在数据库中,我有一个名为“members”的表,其中包含他们的所有信息。 在导航栏中,有一个下拉列表,其中显示成员:

这是menu.component.html的代码部分:

<li *ngFor="let member of members">
   <a class="dropdown-item js-scroll-trigger" routerLink="/band/{{member.name}}">
      {{ member.name }}
   </a>
</li>
<div class="row align-items-center no-gutters mb-4 mb-lg-5">

   <div class="col-xl-auto col-lg-auto"><img class="img-fluid mb-3 mb-lg-0" 
   src="http://localhost/web/back/web/{{member.image}}" alt="" /></div>
        <div class="col-xl-6 col-lg-7">

            <div class="featured-text text-center text-lg-left">
                <h4>{{member.name}}</h4> 
                       
                <p class="text-black-50 mb-0">{{member.instrument}}</p>

                <br>     
                   
                <p class="mb-0 text-black-50 justificado">
                      {{member.description}}
                </p>
            </div>                      
        </div>                
</div>
我还有一个名为member的组件,它显示信息,还调用api。这就是结构。member.component.html:

<li *ngFor="let member of members">
   <a class="dropdown-item js-scroll-trigger" routerLink="/band/{{member.name}}">
      {{ member.name }}
   </a>
</li>
<div class="row align-items-center no-gutters mb-4 mb-lg-5">

   <div class="col-xl-auto col-lg-auto"><img class="img-fluid mb-3 mb-lg-0" 
   src="http://localhost/web/back/web/{{member.image}}" alt="" /></div>
        <div class="col-xl-6 col-lg-7">

            <div class="featured-text text-center text-lg-left">
                <h4>{{member.name}}</h4> 
                       
                <p class="text-black-50 mb-0">{{member.instrument}}</p>

                <br>     
                   
                <p class="mb-0 text-black-50 justificado">
                      {{member.description}}
                </p>
            </div>                      
        </div>                
</div>
我的想法是,当我在导航栏中单击某个成员时,它会将我重定向到web.com/band/memberName,并根据您选择的成员,向我显示其相应的信息。我该怎么做

更新:我用下一个解决了它: member.component.ts:

export class MenuStComponent implements OnInit {

   members: Member[] = [];

   constructor(private data: DataService) { }

   ngOnInit(): void {
       //this.data.getAllMembers().subscribe(data => console.log(data));
       this.data.getAllMembers().subscribe(data => this.members= data);    
    }

 }
export class IntegranteComponent implements OnInit {

  members: Member[] = [];
  member: string='';

  constructor(private data: DataService, private route: ActivatedRoute, 
  private router: Router) { }

  ngOnInit(): void {
    //this.data.getAllMembers().subscribe(data => console.log(data));
    this.data.getAllMembers().subscribe(data => this.members= 
    data);

    this.member = this.route.snapshot.params['name'];
    this.router.routeReuseStrategy.shouldReuseRoute = () => false;
  }
} 

如果您实际上可以导航到成员页面,那么只需从url参数捕获成员名称,然后从api获取成员

以下是获取url参数的方法:

constructor(private route: ActivatedRoute){}

member: string;

ngOnInit(){
 this.route.params.subscribe((params: Params) => {
   this.member = params.name
 });
}

通过这种方式,您可以从url获取成员名称,然后从api获取成员详细信息。

更新:我有一个想法,如果在members.component.html中执行ngfor,我会将url中的名称与迭代中的名称(member.name)进行比较,以便如果它们匹配,我会显示与该名称相关的数据。这将是一种正确的方法?在我看来,如果您使用url参数从api获取成员详细信息,而不是硬编码所有成员信息,则会更好。请查看我提出的解决方案,这样您可以读取用户选择的成员,然后您可以从api获取详细信息。对不起,我必须在“参数”上添加什么您可以将其保持原样,当执行时,它将在成员变量上存储成员的名称。它显示错误:类型“Router”上不存在属性“params”。请确保导入了ActivatedRoute,还有其他类似的库您必须从@angular/Router导入ActivatedRoute和params