【发布时间】:2023-03-07 22:28:02
【问题描述】:
我有一个用户列表,我想使用模式编辑用户的详细信息。如何将数据从组件的用户列表传递到模态,然后在组件代码中获取这些详细信息(以便调用 API)?
这是组件代码:
export class DeviceUsersInternalComponent implements OnInit {
@Input() summary: any;
users: UserDetails[];
updateCredentials() {
}
}
这里是html:
<div class="col-lg-6 col-md-6 col-sm-6" *ngIf="summary">
<div class="panel panel-default panel-primary">
<div class="panel-heading">
<div class="thead">USERS</div>
</div>
<div class="panel-body table-responsive">
<p *ngIf="!users">No Users</p>
<table class="table table-striped table-condensed table-borderless table-responsive" *ngIf="users">
<tbody>
<tr *ngFor="let us of users">
<td>
<a class="btn btn-md btn-primary"
data-toggle="modal"
data-target="#changeCredentialsModal">{{ us.operatorId }}</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="changeCredentialsModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header bg-primary">
<div class="thead">Change details for {{ us.name }}</div>
</div>
<div class="modal-body">
<form (ngSubmit)="onSubmit()" #changeCredentialsForm="ngForm">
<div class="form-group">
<table class="table table-condensed table-borderless">
<tr>
<td class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label>Name: </label>
<input type="text" class="form-control" ng-model="user.name"/>
</td>
</tr>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal">Close</button>
<button class="btn btn-success" data-dismiss="modal" (click)="updateDetails()">Submit</button>
</div>
</div>
</div>
</div>
【问题讨论】:
-
是否尝试过使用角度服务?您可以在打开模式弹出窗口之前将数据设置到服务中,并在模式打开后读取相同的数据。
-
@Code-EZ 好主意,我试试看。
-
如果您想根据新的服务数据对组件进行更改检测,请在您的组件上创建一个 getter setter 属性。 get users():UserDetails[]{ return this.service.UserDetails; }.something like this
-
您可以将 ng-bootstrap 用于模态;它有一个 ModalService,您可以使用它来将数据从父级传递到 Modal 并从 code 动态打开模态。然后你可以在你的模式中使用 EventEmitter 从服务中返回数据。
标签: angular twitter-bootstrap typescript webpack angular6