如何在Angular 6中创建cookie?

Aks*_*rma 37 angular-cookies angular angular6

如何在Angular 6中创建cookie,对于AngularJS有ngcookie在Angular 6中创建cookie的最佳方法是什么.

M.L*_*ida 60

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

  • 我相信你忘了提到将它添加到app模块.在你的`@NgModule`中添加它作为提供者`providers:[CookieService]` (5认同)

小智 30

您可以使用此节点包

NGX-cookie的服务


bvd*_*vdb 26

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

Cookie曾经用于一般客户端存储.虽然这是在客户端上存储数据的唯一方法,但这是合法的,现在建议更喜欢现代存储API.Cookie随每个请求一起发送,因此可能会降低性能(尤其是移动数据连接).用于客户端存储的现代API是Web存储API(localStorage和sessionStorage)和IndexedDB.(来源:MDN)

因此,如果您还没有,则可能需要阅读有关Web Storage API的信息.

如果您想继续使用cookies,请继续阅读.

我试过ngx-cookie-service,它对我不起作用.我在问题发生后有问题,最后在github上讨论它,尝试更新软件包.我花了大约一天的时间才意识到我需要的东西并不是那么复杂,毕竟获取/设置cookie只是一个原生的javascript事情.

我没有时间浪费了,CookieService自己也写了这么简单.我只是想与其他绝望的开发者分享.:)

一个简单的CookieService

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

设置和使用

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

providers: [FooService, BarService, CookieService]
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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

cookie已设置

使用cookie