小编Mat*_*att的帖子

在Angular 2模型驱动的表单中设置选择控件的选定选项

我已经在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元素中,这也没有帮助.

我会感激任何帮助.

html angular

14
推荐指数
1
解决办法
3万
查看次数

将尾随小部件推到 Flutter Navigation Rail 的底部

如何将 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 flutter-layout

8
推荐指数
1
解决办法
3644
查看次数

Flutter-Riverpod - 如何组合提供者来过滤流

我正在尝试遵循有关如何使用 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> …

flutter riverpod

4
推荐指数
1
解决办法
2954
查看次数

标签 统计

flutter ×2

angular ×1

flutter-layout ×1

html ×1

riverpod ×1