【发布时间】:2018-03-24 20:16:51
【问题描述】:
我有角度组件将值传递给子组件,并且该子组件在 ngFor 中使用该值,父组件从服务获取原始值做 http 请求。
这是将“cats”传递给子道具 [catsToShow] 的 http 请求承诺的父组件
<div class="container">
<div class="ddlContainer clearfix">
<select class='select-option' [(ngModel)]='selectedCat' (ngModelChange)='onOptionsSelected($event)'>
<option *ngFor='let cat of cats' [value]="cat.name">{{cat.name}}</option>
</select>
</div>
<app-add-modal [catsToShow]="cats"></app-add-modal>
<ul>
<li *ngFor="let item of items">{{item.body}}</li>
</ul>
</div>
这是子组件尝试生成 ngFor :
<div class="btnContainer">
<button type="button" class="btn btn-outline-success addNewModalOpener" (click)="openAddNewModal()">Add New</button>
</div>
<div id="addNewModal" class="formAddContainer">
<form class="formAdd">
<input class="form-control form-control-lg" type="text" placeholder="name" />
<input class="form-control form-control-lg" type="text" placeholder="body" />
<select class='select-option form-control'>
<option *ngFor='let cat of catsToShow' [value]="cat.name">{{cat.name}}</option>
</select>
<button type="submit" class="btn btn-success">add</button>
</form>
</div>
import { Component, OnInit, Input} from '@angular/core';
declare var $:any;
@Component({
selector: 'app-add-modal',
templateUrl: './add-modal.component.html',
styleUrls: ['./add-modal.component.scss']
})
export class AddModalComponent implements OnInit{
@Input() catsToShow;
constructor() { }
ngOnInit() {
$(".formAddContainer").iziModal({ width: '80%', padding: 10, borderBottom: false, background: 'rgba(136, 160, 185,0)' });
$('#addNewModal').iziModal('open');
}
}
我正在使用 iziModal 为用户初始化一个框以开始收集数据,下拉列表向用户显示没有 ngFor 生成的项目...所以如何首先同步绑定的输入值 [catsToShow] 以生成 ngFor 列表然后显示那些在 iziModal 框中给用户的项目
【问题讨论】:
-
您是否在浏览器的控制台中看到任何错误消息?
-
没有错误,ngFor 列表只是空的
-
但是猫在父组件中工作。我的意思是它肯定包含显示的值?
-
是的,如果我在 setTimeout 中将代码包装 1 秒,则猫有值,将生成列表
-
@andrewsaeed,您将 jquery 的内容与 angular 混合在一起,这当然是行不通的,因为它们彼此一无所知,并且不注意邻居区域可能发生的任何变化。也就是说,当其他人试图给你一个提示时,很可能问题在于你如何初始化该集合,但这里不包含该代码。请这样做。
标签: angular