由于 ngIf 语句,存储选择未运行

2024-06-05

我正忙于 MeteorJS 和 RxJS,它们正在退出,但有时也有点令人困惑。 我当前的问题只是 Angular NgRx 问题,与 MeteorJS 无关。

正如您在示例中看到的,有一个ngIf基于showChannels。该布尔值设置为false。然而,里面的async for循环引用了我的store.select。 然而,由于 ngIf,管道中的运算符永远不会被执行。看来是陷入了僵局。 如何使订阅开始工作?

当我进行搜索时,它会将频道添加到商店,并且store.select如果没有的话会起作用ngIf周围的ngFor loop.

当我将 if 替换为*ngIf="(channels$ | async) ?.length !== 0"它会起作用,但随后tap当我进行一次搜索时运行两次。

带有 subscribe 的注释 store.select 实际上可以很好地使用markForCheck。关于不使用时最好的解决方案的任何建议subscribe?

  @Component({
    selector: 'podcast-search',
    changeDetection: ChangeDetectionStrategy.OnPush, // turn this off if you want everything handled by NGRX. No watches. NgModel wont work
    template: `
      <h1>Podcasts Search</h1>
      <div>
        <input name="searchValue" type="text" [(ngModel)]="searchValue" ><button type="submit" (click)="doSearch()">Search</button>
      </div>
      <hr>
      <div *ngIf="showChannels">

        <h2>Found the following channels</h2>
        <div *ngFor="let channel of channels$ | async" (click)="loadChannel( channel )">{{channel.trackName}}</div>
      </div>
    `,
  })

  export class PodcastSearchComponent implements OnInit, OnDestroy  {
    channels$: Observable<Channel[]>;
    searchValue: string;
    showChannels = false;

    constructor(
      private store: Store<fromStore.PodcastsState>,

    ) {}

    ngOnInit() {

      this.channels$ = this.store.select(fromStore.getAllChannels).pipe(
        filter(channels => !!channels.length),
        // channels.length should always be truthy at this point
        tap(channels => {
          console.log('channels', !!channels.length, channels);
          this.showChannels = !!channels.length;
         }),
      );
    // this.store.select( fromStore.getAllChannels ).subscribe( channels =>{
    //   console.log('channels', !!channels.length, channels);
    //   this.channels$ =  of ( channels );
    //   this.showChannels = !!channels.length;
    //   this.ref.markForCheck();
    // } );

    }

  doSearch() {
    console.log( 'search', this.searchValue );
    this.store.dispatch( new fromStore.LoadChannels( this.searchValue ) );
  }

Use the ngIf as syntax https://angular.io/api/common/NgIf#storing-conditional-result-in-a-variable

*ngIf="channels$ | async as channels"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由于 ngIf 语句,存储选择未运行 的相关文章

  • ViewChild 与 Angular 中的输入/输出相比,有什么缺点或功能差异吗?

    我正在阅读有关 Angular ViewChild 的内容并与输入 输出参数进行比较 只是好奇 Viewchild 是否有任何缺点 或者无法做一些输入 输出可以做的事情 看来 ViewChild 是首选路线 因为所有参数现在都位于 Type
  • 使用 angular2 将图像上传到 asp.net core

    所以我有 Angular2 的 ASP NET Core 应用程序 现在我想上传图像 如果我将其上传为 byte 我就成功了 但后来我无法检查文件是否真的是后端的图像 所以我尝试寻找其他解决方案 我发现了这个关于文件上传的博客 https
  • Angular-CLI 全局 scss 变量

    如何在最新的 Angular CLI 使用 webpack 中添加全局 scss 变量 看起来在 styles scss 中定义的全局变量在组件样式中不可用 它们需要通过相对路径导入到组件的 SCSS 文件中 这将允许编译器找到处理所需的父
  • 使用 DI 进行单元测试和模拟服务

    我已经为此苦苦挣扎了一段时间 希望有人能提供帮助 我有一个使用服务来获取数据的组件 我正在尝试向其添加单元测试 我的问题是测试总是失败并显示 错误 没有 Http 提供程序 这是我的代码 Service import Injectable
  • 使用 ngFor 函数时,Angular Material matToolTip 不显示

    我有一组称为报告的数据 其中包含一组网络 report networks 在返回网络数组之前 我有 model ts 来操作它 我做了一个 ngFor 来迭代网络数据以显示工作正常的详细信息 但是 在 ngFor 中添加 matToolTi
  • Angular 2 将参数传递给构造函数引发 DI 异常

    我想在构造函数中的组件上设置字符串属性 但是当我尝试这样的操作时 Component selector wg app templateUrl templates html wg app html export class AppCompon
  • 如何绑定 Angular 2 表达式和 TypeScript 方法?

    我想做的是在输入名字和姓氏时显示全名 这有效 h1 Hello lastName firstName h1 这不起作用 调用类中定义的方法的正确方法是什么 这也不起作用
  • 从 SERVICE 执行 COMPONENT 方法

    我正在尝试执行一个组件method from a 服务方式 我看到了另外 2 个线程 Link1 如何从服务调用组件方法 https stackoverflow com questions 40788458 how to call comp
  • 如何在 Angular CLI 中重命名组件?

    除了手动编辑所有组件文件 例如文件夹名称 css ts spec ts 和 app module ts 之外 是否有任何快捷方式可以使用 Angular CLI 重命名组件 No 没有任何命令可以更改使用组件创建命令生成的所有文件的名称 于
  • 将嵌入的内容传递给嵌套列表的孙组件

    我知道有几个问题与此类似 但它们并不完全相同 我正在构建一个嵌套列表 我想在每个孙子中与常见 html 一起显示自定义 html 内容 当我在循环外部添加到 ListComponent 时 可以正常工作 但是如果我将其在循环内部传递给内部子
  • 使用ngx-print打印图像的问题

    图像未使用 ngx print 打印 我不确定我在这里做错了什么 HTML
  • Angular HttpClient - rxjs 映射 - 到类型数组

    我有以下内容HttpClient post调用它返回一个对象数组 import map from rxjs operators map public getArray profileId number Observable
  • 如何使用签名网址将文件上传到谷歌云存储桶

    我正在开发一个 Angular 应用程序 用于显示谷歌云存储桶的内容 对于后面 我在nodeJS中使用谷歌云功能 正如他们在上传文件的文档中提到的 我创建了一个函数来生成签名 url 但是当我使用签名 url 发送文件时 我在浏览器中收到了
  • Angular 2/4 编辑表单填充 FormArray 控件

    我正在尝试为具有嵌套属性 FormArray 的模型实现编辑表单 我在语法上遇到了问题 并且不确定我是否走在正确的轨道上 主表单的属性有效 这是我遇到问题的嵌套表单 这是我到目前为止所拥有的 这里我发起表单组 private initFor
  • 如何将参数传递给 JHipster 中的自定义错误消息?

    我仍在学习 JHipster 所以今天我想自己进行一些验证练习 并尝试向我的前端发送有意义的错误消息 这是我尝试过的 在我的控制器中 我有以下内容 POST lessons Create a new lesson of 45 min if
  • Angular 2 从 Observable 获取项目的方法

    给定 Angular 2 服务中的以下 Typescript getLanguages return this http get this languagesUrl map res gt
  • JHipster:使用标准过滤实体 - 预期的 Angular 客户端方法

    我最近开始使用JHipster http www jhipster tech 感谢这个出色项目的维护者 在 JHipster 的当前版本 撰写本文时为 4 10 2 中 实体可以通过实体子生成器启用过滤 或者通过包含filter Entit
  • 使用 ngrx 时 Angular 4 解析未完成

    我正在尝试在我的应用程序的解析中使用 ngrx 但由于某种原因它不起作用 这就是我之前获得它的方式 在我的解析路由中使用一个简单的服务 resolve return this service getData map data gt data
  • 聚合物纸下拉菜单在浏览器中未正确呈现

    我对简单的纸张下拉菜单的渲染 html 遇到问题 列表项并不显示为样式化的 菜单 而只是出现在页面上的项目列表 单击渲染的纸张输入组件 渲染的下拉列表的一部分 确实会为波纹设置动画 但不会为菜单和菜单项的显示 隐藏设置动画 单击列表中的某个
  • 我可以使用指定的种子运行 Karma 测试吗? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在从事一个用 Karma Jasmine 进行测试的 Angular 项目 默认情况下 角度测试按随机顺序运行 如果按特定顺序运行 可能

随机推荐

  • 这里地图不起作用

    我想实施这里 地图 https www here com 在我的应用程序中 我刚刚开始实现一个示例应用程序 仅显示这里 地图 My code map embedded in the map fragment private Map map
  • 使用 SQLAlchemy 的中间人表将属性作为列表的字典

    我的问题是关于 SQLAlchemy 但我很难用语言解释它 所以我想我用一个简单的例子来解释我想要实现的目标 parent Table parent metadata Column parent id Integer primary key
  • 如何在方向改变时将片段保留在内存中

    我正在使用片段创建一个平板电脑优化的应用程序 我在左侧有一个细小的导航片段 其中带有按钮来控制将哪些片段加载到占据屏幕其余部分的两个 ViewGroup 容器中 例如 如果按下导航片段中的按钮 第一个容器将加载项目列表片段 例如 用于设置
  • 马里奥在 pygame 中跑过屏幕太快

    首先是代码 import pygame sys from pygame locals import class Person pygame sprite Sprite def init self screen self screen scr
  • 如何在django模板中显示img文件?

    我知道标题有点误导 但我解释了一切 我正在 django 中创建商店 有一个小问题我不知道如何解决 好吧 对于每个产品 我想分配几张保存在数据库中的照片 这就是为什么我创建了Photo模型 它连接到Book模型与一个ForeignKey 整
  • 如何在Silverlight应用程序中显示HTML?

    我需要在我的 Silverlight 应用程序中显示一些基本的 HTML 只是一些段落 无序列表和超链接 我该怎么办呢 使用哪个控件 对于初学者来说 请尝试此链接 http www wintellect com CS blogs jpros
  • 使用 CNN 和 pytorch 计算每个类别的准确度

    我可以使用此代码计算每个时期后的准确性 但是 我想最后计算每个班级的准确性 我怎样才能做到这一点 我有两个文件夹 train 和 val 每个文件夹有 7 个不同类别的 7 个文件夹 train 文件夹用于训练 否则 val 文件夹用于测试
  • 如何将 JasperViewer 与基于 Swing 的应用程序集成

    我可以将 JasperReports Viewer 集成到我的 Swing 应用程序中 就像我单击应用程序中的 查看报告 按钮一样 然后应该打开查看器 如果是这样 您可以建议我提供此集成的代码片段吗 在此查看器中 保存类型应仅限于 PDF
  • 转置 CopyFromRecordset Excel VBA

    我的 Excel VBA 中有以下代码 可将 SQL 中的表中的数据复制到 Excel 中 该数据从单元格 C2 开始水平插入 但我希望将其垂直插入到 C 列 Sheets Control Range C2 CopyFromRecorset
  • Plotly:如何绘制累积“步数”直方图?

    我正在尝试使用 python 中的 Plotly 绘制累积直方图 但使其看起来像 步骤 即没有颜色且仅显示顶线的条形图 像这样的事情 基本上 我试图重现以下 matplotlib 代码的行为 import matplotlib pyplot
  • 隐藏选择中的第一个选项[重复]

    这个问题在这里已经有答案了 我在下拉列表中有动态生成的选项 我想隐藏第一个选项 因为不需要 有没有跨浏览器兼容的方法来实现这一点 无论使用 jquery 还是 css 任何解决方案都是好的 Ahmar my drop down select
  • 如何使用 iTextSharp 拼合 XFA PDF 表单?

    我假设我需要展平 XFA 表单 以便在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示 当我现在处理它时 我收到一条通用消息 请等待 如果该消息最终没有被替换 正在寻找一些示例 iTextSharp 代码来执行此操作 您没有
  • spring中如何外部化配置?

    我正在尝试使用 spring 外部化配置 但无法使其正常工作 这是我到目前为止所做的 在 war 文件 src test resources 中为每个环境创建一个属性文件 例如 nonprod key properties prod key
  • 如何将 Apache Axis2 Web 服务运行时添加到 Eclipse

    我想为我的项目创建一个 Web 服务客户端 我需要使用 Axis2 运行时 但它在我的客户端环境配置中不可用 我怎样才能添加它 我正在使用 Eclipse 开普勒 Axis 和 Axis2 插件默认随 Eclipse J2EE 版本一起提供
  • Knockout JS 中的多个扩展器不起作用

    刚刚在KO中找到了出路 所以请温柔一点 每个扩展器单独工作 但是当我链接它们时 第一个 重置 不会触发 JavaScript ko extenders reset function target var initialValue targe
  • 如何使用WAMP登录phpMyAdmin,用户名和密码是什么?

    根 这个词是什么意思php我的管理员 http en wikipedia org wiki PhpMyAdmin 每当我写作时localhost phpmyadmin在地址栏上 我被要求输入用户名和密码 但我不知道它们是什么 我不记得何时何
  • 所有 'size' 、 'prototype' 的声明必须具有相同的修饰符

    I have downloaded code from repository and run it on local getting these errors have following versions when i run ionic
  • 如何将绑定源设置为“self”/UserControl 代码隐藏

    如何设置绑定源以指向 此 UserControl CodeBehind 例如 从用户控件MarkdownEditor xaml 我想指出其中的属性MarkdownEditor xaml cs 无需设置即可执行此操作DataContext t
  • VS 代码片段变换: if (正则表达式匹配 X) { 使用变换 A } else if (正则表达式匹配 Y) { 使用变换 B }

    我正在尝试创建一个片段 该片段根据文件路径创建类名 如果文件名为index js 我希望类名采用文件夹名称 否则 使用文件名 如果文件被命名 我有一个当前正在工作的转换 如下所示 index js 它正确插入文件夹名称 我将如何扩展这个 假
  • 由于 ngIf 语句,存储选择未运行

    我正忙于 MeteorJS 和 RxJS 它们正在退出 但有时也有点令人困惑 我当前的问题只是 Angular NgRx 问题 与 MeteorJS 无关 正如您在示例中看到的 有一个ngIf基于showChannels 该布尔值设置为fa