类型“ {}”上不存在属性“订阅”

时间:2019-10-16 08:46:28

标签: angular

我在尝试从浏览器获取cookie时遇到以下问题,但是我需要在它们出现时获取它们。它们中的一些不会立即显示,因此我尝试使用以下代码来使它们出现。我在编辑器中看到的错误是:

  

类型“ {}”上不存在属性“订阅”

import { CookieService } from 'ngx-cookie-service';

this._cookieService.getAll().subscribe((result) => {
  console.log(result);
});

有人可以帮忙吗

3 个答案:

答案 0 :(得分:2)

对应于文档,getAll函数返回具有键值对的映射。因此无需订阅。

https://www.npmjs.com/package/ngx-cookie-service

var result = this._cookieService.getAll();

如果您想收到Cookie更改的通知,则可能最终编写了一个函数,该功能会定期检查更改,例如此处其他答案或有关以下其他问题的建议:can i be notified of cookie changes in client side javascript

ngx-cookie-service没有提供任何帮助程序来达到此目的(我通过一些研究发现也没有提供任何其他cookie帮助程序库)。

答案 1 :(得分:2)

ngx-cookie-service的getAll()方法返回的对象不可观察。

它是: getAll():{}

只需使用:

result = this._cookieService.getAll();

选中Documentation

答案 2 :(得分:1)

您可以基于rxjs timer()编写具有轮询功能的服务,该服务可以连续检查cookie:

 private timer$: Subscription = new Subscription();

 public polling(frequency = 1000 * 60 * 5) {
        this.timer$.unsubscribe();
        this.timer$ = timer(0, frequency).subscribe(
            () => this.result = this._cookieService.getAll();
        );
    } 

希望这种方法对您有所帮助!