我目前使用NG2-BS3模态。我有一个“俱乐部”部分列出从我的数据库中的一些足球俱乐部到表。我成功的那一部分,但我想俱乐部的细节展示到一个模式。我怎样才能做到这一点?我发现了一些类似的问题,但似乎没有什么帮助,因为我是在角初学者。
club.component.html
<div class='panel panel-primary clubtable'>
<div class='panel-heading'> Premier League Clubs Season 2018-2019 </div>
<div class='panel-body'>
<div class='table-responsive'>
<div class="alert alert-info" role="alert" *ngIf="indLoading">
<img src="../../images//misc/loader.gif" width="32" height="32" />
</div>
<div *ngIf='clubs && clubs.length==0' class="alert alert-info" role="alert"> No clubs found! </div>
<table class='table table-striped' *ngIf='clubs && clubs.length'>
<thead > <tr> <th> Name </th> </tr> </thead>
<tbody> <tr *ngFor="let club of clubs"> <td> {{ club.ClubName }} </td> <button title="Details" class="btn btn-primary" (click)="modal.open()"> Details </button> </tr> </tbody>
</table>
<div> </div>
</div>
<div *ngIf="msg" role="alert" class="alert alert-info alert-dismissible">
<button type="button" class=" close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"> × </span></button> <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only"> Error: </span> {{ msg }}
</div>
</div>
</div>
<modal #modal>
<modal-header [show-close]="true" *ngFor="let club of clubs">
<h4 class="modal-title"> {{club.ClubName }} </h4>
</modal-header>
<modal-body>
<div class="container-fluid" *ngFor="let club of clubs" >
<div class="row"> <img src={{club.BadgeURL}} /> </div>
<div class="row"> <span> Year founded: </span> {{club.YearFounded}} </div>
<div class="row"> <span> Location: </span> {{club.Location}} </div>
<div class="row"> <span> Nickname: </span> {{club.NickName}} </div>
</div>
</modal-body>
<modal-footer> <div> <a class="btn btn-default" (click)="modal.dismiss()"> Cancel </a> </div> </modal-footer>
</modal>
club.component.ts
import { Component, OnInit, ViewChild } from "@angular/core";
import { UserService } from '../Service/user.service';
import { IClub } from '../Models/club';
import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';
import { Observable } from 'rxjs/Rx';
import { Global } from '../Shared/global';
@Component({
templateUrl: 'app/components/clubs.component.html'
})
export class ClubsComponent implements OnInit {
@ViewChild('modal')
modal: ModalComponent;
clubs: IClub[];
club: IClub;
msg: string;
indLoading: boolean = false;
modalTitle: string;
badgeURL: string;
yearfounded: Date;
location: string;
nickname: string;
constructor(private _userService: UserService) { }
ngOnInit(): void {
this.LoadClubs();
}
LoadClubs(): void {
this.indLoading = true;
this._userService.get(Global.BASE_USER_ENDPOINT).subscribe(clubs => {
this.clubs = clubs;
this.indLoading = false;
}, error => this.msg = <any>error);
}}
任何帮助会很大是非常感谢!先感谢您!
那么,你正在使用ngFor
遍历的模态分量的所有俱乐部 - 所以很明显所有的俱乐部将被渲染。你会以某种方式必须使用您club.id
在函数调用来决定显示哪些俱乐部。您可以通过在另一个函数来包装一下你modal.show()
实现这个目标,并调用您的详细信息按钮的(click)
事件。
<button title="Details" class="btn btn-primary" (click)="openClubModal(club.id)"> Details </button>
该功能看起来是这样的:
openClubModal(modalId: number) {
this.club = this.clubs.filter((club) => club.id === clubId));
this.modal.show();
}
...然后显示在你的模式单一的俱乐部:
<modal-body>
<div class="container-fluid">
<div class="row"> <img src={{club.BadgeURL}} /> </div>
<div class="row"> <span> Year founded: </span> {{club.YearFounded}}</div>
<div class="row"> <span> Location: </span> {{club.Location}} </div>
<div class="row"> <span> Nickname: </span> {{club.NickName}} </div>
</div>
</modal-body>
你将不得不调整头以及:
<modal-header [show-close]="true">
<h4 class="modal-title"> {{club.ClubName }} </h4>
</modal-header>