小编Kev*_*rge的帖子

ExpressionChangedAfterItHasBeenCheckedError解释

请向我解释为什么我一直收到这个错误: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

显然,我只是在开发模式下获得它,它不会在我的生产版本中发生,但它非常烦人,而我根本不理解在我的开发环境中出现错误的好处 - 不会出现在prod上 - - 可能是因为我缺乏理解.

通常,修复很容易,我只是将错误导致代码包装在setTimeout中,如下所示:

setTimeout(()=> {
    this.isLoading = true;
}, 0);
Run Code Online (Sandbox Code Playgroud)

或者使用如下构造函数强制检测更改constructor(private cd: ChangeDetectorRef) {}::

this.isLoading = true;
this.cd.detectChanges();
Run Code Online (Sandbox Code Playgroud)

但为什么我经常遇到这个错误?我想了解它,以便将来可以避免这些hacky修复.

angular2-changedetection angular2-databinding angular

243
推荐指数
18
解决办法
15万
查看次数

Angular Universal 生成 404(和其他 HTTP 代码)标头

我正在使用 Angular Universal 创建一个网站。它将进行服务器端渲染,以便搜索引擎可以对其进行索引。

我已经编码了 404 后备路由,它正确显示了其组件,但它显示了 HTTP 200 标头代码。

如何强制使用特定的标头代码?我用谷歌搜索了一些查询,但我发现的所有内容似乎都是关于读取HTTP 调用的状态代码,而没有关于如何将其写入浏览器的内容。

seo angular-universal angular

8
推荐指数
2
解决办法
7178
查看次数

如何在没有抛出错误的情况下对 Angular-cli 构建进行故障排除

我刚刚将我的 Angular 应用程序升级到版本 5,效果很好。然而,一旦我升级了其他一些东西(比如@angular/cdk、@angular/material、typescript),我就不得不修复升级带来的一堆错误。当我运行ng serveng build --prod(JIT 和 AOT 构建)时,一切看起来都很棒——终端中没有任何错误,应用程序构建成功。然后应用程序localhost:4200按预期运行,但应用程序似乎没有启动,浏览器控制台中根本没有打印任何内容。

我可以做些什么来解决问题?我没有任何错误可以查看,我觉得我只需要猜测出了什么问题。

有什么建议?

angular-cli angular angular-aot

6
推荐指数
0
解决办法
664
查看次数

括号在页面刷新时破坏 Angular 路由

我可以从 angular 应用程序中访问以下路径(通过单击具有 routerLink 的产品链接):

{basePath}/product/trek-monda-slr-frameset-(h2-fit)-2016
Run Code Online (Sandbox Code Playgroud)

但是,一旦我刷新页面 angular 就会在控制台中引发错误并且不会提供页面:

Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'h2-fit'
Run Code Online (Sandbox Code Playgroud)

我的猜测是角度路由器不允许括号。但是对于大多数浏览器来说,url 中的括号不是有效字符吗?

为什么 Angular 不允许这样做?

angular2-routing angular

5
推荐指数
1
解决办法
2354
查看次数

Angular RouterLink queryParamsHandling 处理可选参数

是否有一种干净的方法可以将当前可选的 queryParams 与模板中链接上的附加可选 queryParam 合并?

当前网址:/search;brand=Trek

所需的转到链接:/search;brand=Trek;start=1(startCount 将递增)

我知道 Angular 支持合并普通queryParams 的功能(https://angular.io/docs/ts/latest/api/router/index/RouterLink-directive.html),但我认为它不适用于可选的queryParams。

这就是为什么这不起作用:

<a class="nav-btn"
   queryParamsHandling="merge"
   [routerLink]="[ { start: startCount+1 } ]">
    Next Page
</a>
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

angular2-routing angular

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

我可以直接从chrome DevTools编辑我的角度项目的CSS文件吗?

使用默认视图封装(模拟)在浏览器开发工具中为组件设置样式的最有效方法是什么?

我当前的工作流程涉及从开发工具中进行大量繁琐的复制和粘贴,如下所示:

在此输入图像描述

Chrome开发工具能够将DOM上的样式更改保存到源css文件(使用工作区保存更改到磁盘),但我不知道这是否适用于Angular和Webpack使用模拟组件样式的方式.

必须有比我目前更快的工作流程.有小费吗?

css google-chrome-devtools visual-studio-code angular-cli angular

5
推荐指数
1
解决办法
759
查看次数

按顺序执行多个异步路径保护

我知道当canActivate函数返回一个简单的时boolean,角度路径保护以指定的顺序执行,但是,如果守卫返回类型Observable<boolean>Promise<boolean>

路线示例:

{
    path: 'confirm',
    canActivate: [AuthGuard, SessionExpiredAuthGuard, CheckoutAuthGuard],
    component: CheckoutReviewOrderComponent
},
Run Code Online (Sandbox Code Playgroud)

SessionExpiredAuthGuard和CheckoutAuthGuard都返回类型Observable<boolean>.我不希望在SessionExpiredAuthGuard完成从异步http请求中检索数据之前执行CheckoutAuthGuard.

有没有办法强制这些异步防护按顺序执行?

angular angular-router-guards angular-observable

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

AmazonSQSClient 获取 FIFO 队列组中的消息数

我正在尝试确定是否可以使用 AmazonSQSClient 获取 AWS FIFO 队列组中的消息数(具有特定 MessageGroupId 的消息)。

我已经看过一些文档: https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SQS/TSQSClient.html

文档暗示我也许可以使用 GetQueueAttributes 方法做我想做的事情......尽管还不清楚。我想在 Lambda 函数中执行此操作。

这可能吗?

c# amazon-sqs amazon-web-services

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

在Web worker中运行Angular app而不从CLI中弹出

我的应用程序中有一些繁重的javascript代码,它正在阻碍UI,使其感觉低于60fps(janky).

我想利用网络工作者而不会失去角度cli的舒适度(我不想跑ng eject).理想情况下,我的整个应用程序将在Web worker中运行.

这目前可能吗?

前提条件:

  • 角2或4
  • Angular-cli v.1.0 +
  • 没有从角度cli弹出

web-worker angular-cli angular

2
推荐指数
1
解决办法
418
查看次数

如何自定义 Facebook 客户聊天插件(测试版)

我知道客户聊天插件仅处于测试模式,但如果可以的话我很想使用它。查看文档后,我似乎找不到自定义聊天小部件功能的方法。

这就是我想做的:

  • 以编程方式显示和隐藏小部件 (javascript)
  • 点击小部件的关闭事件可以隐藏整个小部件,而不仅仅是最小化聊天窗口。
  • 在多个小部件之间切换

背景:

网站是卖家的市场,我希望能够为他们提供个人聊天功能,将消费者与卖家联系起来。

之前的尝试:

  • #fb-root通过定位和应用display: none;或来隐藏和显示小部件display: block;。这工作正常,但仍然很老套,并且不能解决知道何时触发隐藏和显示的问题(通常在按钮上单击“立即聊天”,但我也希望小部件在关闭/最小化时隐藏)。
  • 尝试同时加载两个小部件,但第一个小部件会加载,即使第二个小部件确实加载,由于我的 id DOM 选择器,我也无法一次只定位一个小部件。

index.html(头部内部):

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId            : 'first-app-id',
            autoLogAppEvents : true,
            xfbml            : true,
            version          : 'v2.12'
        });
    };
    (function(d, s, id){
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement(s); js.id = id;
        js.src = "https://connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId            : 'second-app-id',
            autoLogAppEvents …
Run Code Online (Sandbox Code Playgroud)

facebook facebook-messenger facebook-customer-chat

0
推荐指数
1
解决办法
4322
查看次数