问题标签 [angular4]

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 投票
0 回答
669 浏览

angular - Angular 2 和 Primeng:自从我更新到 Primeng 2.0 后,ui-state 不起作用

由于 ip assed 到 primeng 2.0 版本,一些 primeng 组件样式不起作用,ui-state 类(ui-state-hover、ui-state-disabled 等)也不起作用。它适用于primeng 1.0。我实际上在 Angular 4 和 primeng 4 RC1 中,但问题仍然存在。谢谢你。

0 投票
1 回答
284 浏览

angular - 在 Angular 的同一视图中显示使用路由器的多个功能模块

我有一个用例,我需要同时在视图中加载多个模块。问题是,这些模块中的每一个都可能像一个组件一样简单,或者是一个带有路由器和所有东西的复杂 Angular 模块。我想你可以称它为可插入框架。

我必须显示的模块数量或它们是谁是动态的(我从服务器获取它们)。 在此处输入图像描述

我的第一个想法是,如果功能模块的路由器不是与主要模块的单例,并且如果他们不会完全更新 url,这将是很好的情况。

如果引导,每个功能模块都应该能够作为独立应用程序启动(因此,我确实需要它能够整合包括路由器在内的所有 Angular 4 功能)。

我设法通过使用路由器和命名路由器插座(二级路由)来获得一些工作,但不确定从长远来看有多好。

我应该如何处理这个?

0 投票
2 回答
843 浏览

angular - Angular2 - 如何将 HTTP 标头添加到我的应用程序发送到浏览器的响应中?

我正在为工作中的 Angular2 应用程序制作原型。该应用程序应该在一些公司中间件下运行,该中间件期望在从 angular2 应用程序获得的响应中获得多个Link标头。不幸的是,我无法弄清楚如何将标头添加到 Angular 开箱即用的响应中。

为了澄清我的意思——当我直接向我的 Angular 应用程序发送 GET 请求时,它会发回浏览器可以呈现到 SPA 中的文本/HTML 响应。我想在这个响应中添加标题,但不知道怎么做。我发现最接近的是这里的讨论:Angular2 - set headers for each request

这听起来像是重复的,但是在查看了类似的问题后,我发现了如何将标头添加到我使用 HttpModule 中的 HTTP 对象显式生成的响应中,而不是如何将标头附加到 Angular 创建的响应中-盒子。我很想使用像 HTTP 拦截器这样的东西,它只是将标头附加到我的应用程序发出的每个响应中,但看起来 Angular2 在 4.1 版之前不会有拦截器。

编辑:我尝试过的事情:

  • 在我的(主)AppModule 中为 Http ResponseOptions 添加提供程序,将标头添加到响应中
    • 这会将标头添加到我从我的应用程序从 HttpModule 接收的 http 请求中收到的所有响应中,但不会将标头添加到我的应用程序本身发送到外部服务的响应中。

编辑 2:我误解了我的 Angular 应用程序的结束位置以及托管它的服务器的开始位置。可以在服务器中添加这样的标头 - 对于我的简单示例,我需要配置 webpack-dev-server。请参阅下面接受的答案。

0 投票
1 回答
1620 浏览

angular - 无法让 Angular4 使用延迟加载和动画(使用 BrowserAnimationsModule)

无法让 Angular4 使用延迟加载和动画。所以我加载BrowserAnimationsModule了我的 app-modules.ts 并且动画在主模块中工作正常,但在延迟加载的模块中没有,所以我尝试 BrowserAnimationsModule在我的共享模块中加载,因为我收到以下错误: Unhandled Promise rejection: BrowserModule has already been loaded. If you need access to common directives

这是我的共享模块:

一旦我添加它,BrowserAnimationsModule它就会出错,

想法?

谢谢,

肖恩

0 投票
0 回答
773 浏览

angular - 具有 webpack 开发模式的 Angular4 应用程序在使用 EventEmitters 时性能下降

当我在开发模式下使用 @Output 事件发射器时,我的 Angular 4 应用程序性能下降。我尝试尽可能简化我的设置,以便可以理解问题。

一个父组件由多个子组件组成。每个孩子都可以通过@Output 事件发射器发射一个事件。

父组件.ts

父模板.html

child.component.ts

如果我导航到父组件,对于上面的示例,Chrome 处于渲染阶段(Chrome 开发人员工具中的时间线选项卡)大约 1500 毫秒。如果我删除(onSomething)="onSomething($event)",Chrome 将处于渲染阶段约 600 毫秒。如果我在父模板中使用父类中的相应方法添加多个 onSomethings,那么每次添加绑定都会变得更糟,例如 5 个绑定会导致大约 4000 毫秒的渲染时间。

我的设置主要由这些组件组成(我很乐意提供更多详细信息,但由于我不确定要包括哪些内容,所以我尽量减少):

  • 角 4 (4.0.0)
  • 网络包 2.3.2
  • 网络包开发服务器:2.4.2

我的问题是:

  • 如何避免这么长的渲染时间?
  • 为什么它只发生在开发模式下?

工作现场示例:

在https://github.com/mircowidmer/angular2-webpack-starter/commit/ea6511356b13b833f14d455186ec362d7a90c638上提交了一个工作示例,并且可以轻松复制。

0 投票
2 回答
5555 浏览

unit-testing - 单元测试没有 ChangeDetectorRef 的提供者

版本:Angular 4。

我将父组件注入子组件以通过子组件访问父方法。

在父组件中,我不得不使用 ChangeDetectorRef,因为它有一个可以更新运行时的属性。

现在代码工作正常,但子组件规范为注入父组件的“ChangeDetectorRef”抛出错误。

错误:没有 ChangeDetectorRef 的提供者!

父组件

子组件

应用程序.html

子组件的单元测试

当我尝试在子规范的提供程序中添加 ChangeDetectorRef 时,出现以下错误。

失败:遇到未定义的提供者!通常这意味着你有一个循环依赖(可能是由使用'桶' index.ts 文件引起的。)

在谷歌搜索并尝试了很多事情之后,我无法找到解决方案。任何帮助表示赞赏。

0 投票
1 回答
9488 浏览

angular - Angular4 - ZoneAwareError

当我尝试运行看起来像这样的 Angular4 时,我突然看到一个错误......

我无法弄清楚我的代码的哪一部分正在创建它,因为应用程序的其他部分继续正常工作。当我尝试将代码回滚到错误前的版本时,我仍然收到错误消息。错误是如此模糊,我不知道是哪个文件或文件的一部分导致了错误。

有人对如何开始寻找这个有任何想法吗?

更新:错误似乎是当我将服务导入组件时。这是导入和使用服务的仪表板组件的代码。如果我从仪表板组件构造函数中删除它......

错误消失。这是仪表板组件...

...这是服务...

扩展错误...

0 投票
2 回答
12370 浏览

angularjs - ng-bootstrap ngbDropdown 在角度 4 中不起作用

在我的 Angular 4 应用程序中,来自 ng-bootstrap 的 ngbDropdown-Element 不起作用。

我为此案例安装了以下 npm 模块:

"@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.22", "bootstrap": "4.0.0-alpha.6", "bootstrap-sass": "^3.3.7",

我的 app.module.ts 看起来像这样:

在 CCA 活动中,我尝试使用 ng-bootstrap 的演示:

但不幸的是,这段代码的结果非常糟糕:

在此处输入图像描述

当我点击它时没有任何反应......

0 投票
0 回答
1047 浏览

angular - 忽略 Angular 2 Jasmine 中已弃用的警告

我目前正在使用 Angular 2(或 Angular 4)在 jasmine/karma 中运行一些测试。问题是我还在使用尚不完全支持 angular 4 的材料设计,这使得无法测试组件,因为它总是会抛出以下错误:

我不能停止使用“模板”,因为在我看来,我没有使用它,它被 Material Design 在较低级别上使用。

所以我的问题是:

有没有办法忽略或抑制警告?(在构建应用程序时看到代码运行良好)

编辑:Md2 似乎已经解决了这个问题:https ://github.com/Promact/md2/issues/125 (我不能保证这一点)

0 投票
4 回答
107134 浏览

typescript - 类型 'void' 不可分配给类型 'ObservableInput<{}>'

在我迁移到 TS 2.2.2 后,这个错误开始出现,所以我假设这就是问题所在......代码没有停止工作,但现在我收到了这个错误,我尝试了一些事情,比如返回一个空的 observable ,捕获重新抛出的异常并返回一个对象,似乎没有任何效果。为什么现在会发生这种情况?难道它不应该理解我正在重新抛出异常并且不期望返回吗?我误读了错误吗?

这是完整的错误描述:

在此处输入图像描述

这是完整的代码:

我尝试返回 Observable,但我的包装方法期望返回 type T,这是我的反序列化请求 ( map(...)) 的返回。如果我确实返回,throw这是我得到的错误:

[ts] 类型 'Observable' 不可分配给类型 'T'

我正在使用:

  • 角4
  • 打字稿 2.2.2