我已经在SO和其他地方研究过许多类似的现有答案,但是找不到解决方案.
我在Angular 2中使用模型驱动的方法来构建我的表单,这是一个添加和编辑表单.在编辑模式下,使用从服务检索的数据填充值:这方面都很好,因为简单的文本输入都正确绑定.
其中一个属性是"Country",这是一个如下对象:
export class Country {id: number; name: string;}
Run Code Online (Sandbox Code Playgroud)
我想将它绑定到一个选择控件,该控件将包含可用的国家/地区列表,以及表单加载时填充的模型中的一个控件.我希望绑定的值是country对象,而不仅仅是id.
这是select控件的html:
<select class="form-control" id="country" formControlName="country">
<option value="default">--Select a country--</option>
<option *ngFor="let c of countries" [value]="c">{{c.name}} </option>
</select>
Run Code Online (Sandbox Code Playgroud)
这是我尝试从组件类填充值的地方:
(<FormControl>this.personForm.controls['country'])
.setValue(this.person.country, { onlySelf: true });
Run Code Online (Sandbox Code Playgroud)
但是,当页面加载时没有选择的选项,即使控制台确认this.person.country存在并填充了正确的对象.
我可以使用id来处理它:在视图中更改为[value] ="c.id"并在类中附加.id,然后选择正确的选项.问题是select不再为country属性发出一个对象,只是id.我尝试将[value]更改为[ngValue]并获得相同的结果.我甚至将[ngModel] ="country"添加到select元素中,这也没有帮助.
我会感激任何帮助.
如何将 Flutter Navigation Rail 中的尾随 widget 推到导轨底部?我认为这就像用扩展小部件包装尾随小部件一样简单,但我收到了通常的颤动需要绘制错误消息。
如果我添加一个具有固定高度Column的第一个子元素SizedBox,然后添加我想要显示的小部件,我可以让它工作,但我需要间隔符来填充可用空间,而不是固定高度。下面的SizedBox示例确实填充了 200px 的空间,但是如何让它填充可用空间呢?
// other navrail properties....
trailing: Column(
children: [
SizedBox(
height: 200,
),
IconButton(icon: Icon(Icons.settings), onPressed: () {})
],
),
Run Code Online (Sandbox Code Playgroud) 我正在尝试遵循有关如何使用 Flutter 和 Riverpod 组合提供程序来过滤项目列表的示例文档。数据来自使用 Streams 的 Firestore:
final carListProvider = StreamProvider.autoDispose<List<Car>>((ref) {
final carsRepo = ref.watch(carsRepositoryProvider);
return carsRepo.cars();
});
Run Code Online (Sandbox Code Playgroud)
这一切都工作正常,我可以使汽车列表没有问题。现在我想为用户提供根据颜色过滤列表的选项:
enum CarColorFilter {
all,
red,
white,
black,
}
final carListFilter = StateProvider((_) => CarListFilter.all);
Run Code Online (Sandbox Code Playgroud)
然后按照文档示例,我尝试组合提供程序:
final filteredCars = StreamProvider<List<Car>>((ref) {
final filter = ref.watch(carListFilter);
final cars = ref.watch(carListProvider); <-- This line throws the error
switch (filter.state) {
case CarColorFilter.all:
return cars;
case CarColorFilter.red:
return cars.where(...)
default:
}
})
Run Code Online (Sandbox Code Playgroud)
在声明“cars”变量的行上,编辑抱怨道:
参数类型“AutoDisposeStreamProvider <List>”无法分配给参数类型“AlwaysAliveProviderBase <Object,dynamic>”
我认为我的用例和文档之间的区别在于,在给出的示例中, is List<Todo>aStateNotifierProvider而在我的例子中,List<Car> …