Angular 子组件中的显示数据错误?有棱角的
所有代码演示和行为都在这里: 这里不需要解释太多 查看stackblitz,打开第一行(单击该行)。您将看到该行的详细信息。单击第二行,第一行的详细信息将被第二行的详细信息覆盖 此处的示例视频(问题是什么): 代码示例: HTML代码如下: 没有工作的示例:Angular 子组件中的显示数据错误?有棱角的,angular,Angular,所有代码演示和行为都在这里: 这里不需要解释太多 查看stackblitz,打开第一行(单击该行)。您将看到该行的详细信息。单击第二行,第一行的详细信息将被第二行的详细信息覆盖 此处的示例视频(问题是什么): 代码示例: HTML代码如下: 没有工作的示例: <ng-container "> <div class="d-flex row my-1"> class="w-50"><
<ng-container ">
<div class="d-flex row my-1">
class="w-50"></app-child>
</div>
</ng-container>
我所说的不起作用在我执行http请求的代码中不起作用。在stackblitz演示中可以使用。当您执行此任务时
public-getSingleDispatch(book:any){
this.singleDetailsDispatch=book;
}
您正在为所选书本分配所有子输入
您可以将书籍
从ngFor
直接传递给您的子组件(dispatchDetails
):
我认为单个细节对象只能在一次只显示一个细节的情况下工作,如果要显示多个细节,应该保存该细节的多个数据。
使用httpRequest获取详细信息
// Inject httpClient or your service to make request.
public getSingleDispatch(book: any) {
// to avoid to load same detail multimples time, if you already has details saved,
// you only make request if you dont load details previusly.
if( !this.singleDetailsDispatchMap[book.driver])
// make request , subscribe and access to response
this.httpClient.get('http://myApi.test/'+book.driver)
.subscribe(response => {
this.singleDetailsDispatchMap[book.driver]=response;
})
}
// html checking to book expanded and book details
<ng-container *ngIf="book.expanded && !!singleDetailsDispatchMap[book?.driver]">
<div class="d-flex row my-1">
<app-child *ngIf="!!singleDetailsDispatchMap[book?.driver]"
[dispatchDetails]="singleDetailsDispatchMap[book?.driver]"
[closedDetail]="detail"
class="w-50"></app-child>
</div>
</ng-container>
订阅后,响应保存在地图中,使用驱动程序作为键,详细信息作为值,结构如下:
this.singleDetailsDispatchMap = {
"driver1": details1,
"driver2": details2
}
其中的值将是您希望在api中处理的值。
在模板中和评估时生成检查
* ngIf = "book.expanded && !! singleDetailsDispatchMap [book? .driver]"
它将被展开并在地图上显示值,然后它将显示我上面写的详细信息。我无法将这本书传递给函数,因为这本书没有所有的信息。当我使用getByID时,我只获取所有信息。这就是区别。我使用单击的id,因此根据id生成getById,http提供所有信息;我不知道怎么解释……但我不能把书托给孩子。我无法从http get REQUEST获取更多详细信息的新数据。。。。。这是唯一的例子。。我不能用我服务器上的http请求创建stackblitz…@Segma啊,我明白了。但这也相当简单。假设您的getSingleDispatch
返回一个可观察的,您需要做的就是[dispatchDetails]=“getSingleDispatch(book)| async”
我想在一本书中显示多个详细信息。SingleDetails Dispatch不存在。。singleDetailsDispatch是可变的是的,但在您的函数中,以获取书本的细节为例,我建议修改,将该属性附加到书本,我还建议使用map保存细节的其他方法在此处选中此项将不起作用。。。。。。如何解释getSingleDispatch我得到了新数据HTTP GET请求?这不是工作
this.singleDetailsDispatchMap = {
"driver1": details1,
"driver2": details2
}
* ngIf = "book.expanded && !! singleDetailsDispatchMap [book? .driver]"