问题标签 [angular2-pipe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
865 浏览

asynchronous - 尽管 *ngIf 评估为 false,但异步管道仍在执行

我在使用异步管道时遇到问题,因为我想要一个能够同时依赖异步和静态数据的列表。但是,我无法理解如何以聪明的方式做到这一点。

现在它看起来像这样:

这是非常烦人的部分,即使*ngIf是错误的,异步管道仍然会尝试做它的事情。导致应用程序崩溃并抛出错误,指出异步管道的参数类型错误,因为它需要一个承诺而不是数组。

所以我的问题是,为什么它会这样做,以及实现我想要的更好和更正确的方法是什么?

0 投票
1 回答
338 浏览

angular - 为其他元素重用管道过滤器结果

查看官方 angular2 管道文档中的示例,我想知道是否可以实现以下目标:

其中“hasFlyingHeroes”使用 ngFor 的过滤值,以免两次过滤掉 flyHeroes。

0 投票
1 回答
1075 浏览

validation - 防止 angular2 应用程序因日期无效而崩溃(可能会覆盖 DatePipe?)

我基本上有一个这样的 HTML5 日期选择器:

另一个区域显示来自模型的日期,如下所示:

我认为这与这个问题无关,但要彻底,我在幕后有这样的事情:

这很棒。还有很多事情要做,但可能是无关紧要的细节。

问题是你可以点击日期选择器,比如说,选择年份并点击删除,这样做:

坏日期

没问题吧?错了,因为 Angular2 日期管道变得混乱,我的整个应用程序在显示这个非常有用的错误消息后崩溃:

原始异常:管道“DatePipe”的参数“无效”

解决方案似乎很简单,但我不知道如何去做。我想我只需要在 DatePipe 处理它之前捕获日期字符串,并确保日期、月份和年份的有效内容。但是 Angular2 确实很神奇,而且因为它是使用模型绑定完成的,所以我看不到明确的干预途径。

我可能需要覆盖 DatePipe,保留其功能但首先检查字符串。我不知道怎么做。如果您知道如何做到这一点,请分享。任何替代方法也会有所帮助。只要日期不完整,我就不能让应用程序崩溃。

谢谢!

0 投票
2 回答
1993 浏览

angular - invoke pipe during run time using pipe name /metadata

I'm trying to build a dynamic table where i wand to decide in run time which pipe to use (If Any).

I'm trying to achieve something similar to (Simplified):

Table

I understand that this example gives an error. Can i use Reflect is some manner or some other solution?

0 投票
5 回答
73089 浏览

angular - Angular 中的不纯管道是什么?

我无法理解不纯的管道。

纯水管和非纯水管有什么区别?

请用一个简单而基本的例子来解释。

0 投票
8 回答
49782 浏览

unit-testing - 测试组件时如何模拟管道

目前,我正在覆盖提供者以使用这样的模拟服务:

我想对组件使用的管道做同样的事情。我试过了,provide(PipeA, { useClass: MockPipeA })provide(PipeA, { useValue: new MockPipeA() })两者都不起作用。

0 投票
1 回答
1544 浏览

javascript - 为什么这个 Angular 2 Pipe 不返回数据?

我正在使用 Angular 2.0.0-RC.4 构建一个 Angular 2 管道。它应该根据属性栏过滤作为 Foo 数组传入的所有 Foo 对象。当我在调试器中单步执行代码时,会填充“allFoo”变量,“bar”变量也是如此。我可以断点并在控制台中运行 foos.filter() 代码,它会返回一个我期望的数组。当我让函数完成时,它什么也不返回。

我的代码有问题还是 Angular 2 RC4 中的错误?

这是打字稿:

作为参考,每个 Foo 对象看起来像这样,其中 bar 属性在其数组中将具有不同的字符串:

这是应用过滤器的模板文件:

这是加载该模板并使用过滤器的 Angular 类:

这是 Foo 模板和类:

如果我在该行设置断点console.log(results);,我可以在控制台上键入以下内容并输出相应的数据:

如果这有助于解决这个问题,我可以发布转译的 JS。

谢谢!

0 投票
1 回答
865 浏览

asynchronous - 测试异步 PipeTransform

语境

我有一个基本的PipeTransform,期望它是异步的。为什么?因为我有自己的 i18n 服务(由于解析、复数和其他限制,我自己做了),它返回一个Promise<string>

该管道运行良好,因为唯一延迟的调用是第一个调用(I18nService使用延迟加载,只有在找不到密钥时才加载 JSON 数据,所以基本上,第一个调用将被延迟,其他调用是即时的但仍然异步)。

问题

我不知道如何使用 来测试这个管道Jasmine,因为它在一个我知道它可以工作的组件中工作,但这里的目标是使用 jasmine 对其进行全面测试,这样我就可以将它添加到 CI 例程中。

上述测试:

失败是因为由于给出的结果I18nService是异步的,所以返回的值在同步逻辑中是未定义的。

I18n 管道测试可以调用 I18n.get。失败的

预期未定义为“测试值”。

编辑:一种方法是使用setTimeout,但我想要一个更漂亮的解决方案,以避免setTimeout(myAssertion, 100)到处添加。

0 投票
1 回答
359 浏览

angular - Anglar2 Pipe - 使用组件中的属性进行过滤

我无法通过管道访问组件中的属性。

这是我的管道:

这是我在使用过滤器时尝试在 HTML 中访问的组件中的对象:

这是我要过滤的数组,也在我的组件内:

最后是 HTML:

基本上,当我选择一个单位时,我试图返回我的数组中的所有对象,其设备类型为该单位列为真。item.equip_type === "dagger"item.equip_type === "katana"部分在我的 IF 语句中起作用,但是andargs[0].dagger == true似乎&& args[0].katana == true不起作用。无法弄清楚我做错了什么。我也试过'unit'带引号和不带引号,没有运气。

0 投票
1 回答
63 浏览

angular - 如何将值发送到管道?

这是代码:

是否可以将产品颜色发送到管道?我undefined在控制台上打印时得到。

我尝试过像下一个代码一样的插值,但没有成功: