AngularJS在Angular6中的ngcookie有什么作用?

What is the equivalent to AngularJS's ngcookie in Angular 6?

如何在 Angular6 中创建 cookie?对于 AngularJS,有 ngcookie。在 Angular 6 中创建 cookie 的等效方法是什么?

你可以使用这个节点包

ngx-cookie-service

  1. npm install ngx-cookie-service --save
  2. 添加到您的模块:import { CookieService } from 'ngx-cookie-service';
  3. CookieService 添加到模块的提供商。
  4. 将其注入您的构造函数。
  5. 使用 cookie.get(nameOfCookie) 获取特定的 cookie, 使用 cookie.set(nameOfCookie,cookieValue) 添加新的 cookie。

首先,你应该问问自己:“我真的需要饼干吗?” :

Cookies were once used for general client-side storage. While this was legitimate when they were the only way to store data on the client, it is recommended nowadays to prefer modern storage APIs. Cookies are sent with every request, so they can worsen performance (especially for mobile data connections). Modern APIs for client storage are the Web storage API (localStorage and sessionStorage) and IndexedDB. (Source: MDN)

因此,如果您还没有阅读 Web Storage API,您可能想改为阅读。

如果您确实想继续使用 cookie,请继续阅读。

我试过 ngx-cookie-service 但它对我不起作用。我遇到了一个又一个问题,最后在 github 上进行了讨论,尝试更新软件包。我花了大约一天的时间才意识到我需要的东西不必那么复杂,毕竟 getting/setting cookies 只是原生的 javascript 东西。

我没有更多的时间可以浪费了,自己写了这个简单的CookieService。我只是想与其他绝望的开发人员分享它。 :)

一个简单的 CookieService

我创建了这个 gist ,它是 ngx-cookie-service 的轻量级替代品。

设置和使用

当然你需要在你的app.module.ts文件中注册它。 将其添加到您的提供商列表中:

providers: [FooService, BarService, CookieService]

接下来,在您的组件中使用它,例如如下:

private _sessionId: string;

constructor(private cookieService: CookieService) {
  this._sessionId = cookieService.get("sessionId");
}

public set sessionId(value: string) {
  this._sessionId = value;
  this.cookieService.set("sessionId", value);
}

请注意,您可以使用调试工具来验证是否确实设置了 cookie,并验证它是否存在于后续的 HTTP 请求中。 (Chrome 的屏幕截图,但 Firefox 和 Edge 的概述相似)

现在是:npm install ngx-cookie --save

文档: https://github.com/salemdar/ngx-cookie