当前位置: 首页 > 知识库问答 >
问题:

@输入设置器未更新视图数据

戚阳
2023-03-14

在我的angular 6应用程序中,我从存储选择器获取数据,存储选择器反过来使用effect从API获取数据,从父级,我将该数据作为异步管道注入子组件,如下所示:

<chart-data 
[tableData]="data | async">
>

  public chartData: any[];
  // input setter
 @Input() set tableData(
    value: tableData[];
  ) {
    if (value.length > 0) {
      this.chartData = value;
    }
  }

子组件模板

{{tableData | json}}
<section class="chart-container" *ngIf="chartData?.length > 0">
    <div>
     {{chartData| json}}
    </div>
    </section>

共有2个答案

舒赞
2023-03-14

问题是对象是一个数组,你需要改变数组的引用才能重新触发 setter。

白成济
2023-03-14

百米..我不使用带有@ Input decorators的setters。也许可以尝试使用ngOnChanges生命周期挂钩。

@Input tableData;

ngOnChanges(changes: SimpleChanges): void {
    if (changes.tableData?.length) {
        this.chartData = this.tableData;
    }
}
 类似资料:
  • 我有一个以3x4矩阵排列的GridView,GridView中的每一项都是一个包含ImageView和Textview的FrameLayout。最初,文本视图被设置为显示字母“X”。点击后,字母变成“Y”。 它适用于除第一项之外的所有GridView项。如果我点击第一个(左上角),那么无论我等待多长时间,都不会发生任何事情。如果我点击Android模拟器屏幕上的任何其他地方(甚至在GridView

  • 问题内容: 在事件回调中更新模型时,更新模型属性对视图没有影响,是否有任何解决办法? 这是我的服务: 功能已在控制器中动态添加。 控制器: 视图: 因此,问题在于单击按钮会正确更新视图,但是当我从Channel收到消息时,什么也没发生,即使该函数被调用 问题答案: 你失踪了。 每当您从Angular世界外部触摸任何东西时,都需要调用,以通知Angular。可能来自: xhr回调(由$ http服务

  • 我的问题是,当我将observed objects string属性更改为另一个值时,它会更新映像值(使用Unsplash API),打印出更新的值,但WebImage(来自)不会更改。 结果应用于得结构: 下面是包含要更新的webImage的视图: 下面是执行API请求的类: 下面是我如何在一个按钮中更改searchText的值,如果你想看的话:

  • 使用以下的方法来设置表的格式: 【提示】表单视图仅支持显示或隐藏列。 移动列 用滑鼠的左键按住列标题。 移动鼠标直到一条粗黑线出现在所需的位置。 释放滑鼠,列将会移动。 冻结已选择的列 如果表中有很多列,而你想冻结一或多个列来标识记录,只需简单地右击你想冻结的列并选择“显示”->“冻结已选择的列”或从“查看”菜单选择。 已冻结的列会移动到表网格的最左侧。这个动作会锁定已冻结的列,防止它们被编辑。

  • 使用以下的方法来设置表的格式: 【提示】表单视图仅支持显示或隐藏列。 移动列 用滑鼠的左键按住列标题。 移动滑鼠光标到所需的位置。 释放滑鼠,列将会移动。 设置列宽 按住列顶部的右边界并拖曳到左或右。 双击列顶部的右边界来调整为最适合列的宽度。 按住 Control 键并点按列,然后选择“设置列宽”或从“查看”菜单选择。然后,在“设置全部列宽”对话框输入列宽。 【提示】结果应用到所有列。 设置行高

  • 使用以下的方法来设置表的格式: 【提示】表单视图仅支持显示或隐藏列。 移动列 用滑鼠的左键按住列标题。 移动鼠标到所需的位置。 释放滑鼠,列将会移动。 冻结已选择的列 如果表中有很多列,而你想冻结一或多个列来识别记录,只需简单地右击你想冻结的列并选择“显示”->“冻结已选择的列”或从“查看”菜单选择。 已冻结的列会移动到表网格的最左侧。这个动作会锁定已冻结的列,防止它们被编辑。 若要解除已冻结的列