如何在Angular中生成UUID?
我尝试了https://www.npmjs.com/package/uuid-generator-ts和https://www.npmjs.com/package/@types/uuid包。但是我得到了一个错误,如果我安装这些包,
发布于 2020-02-03 16:29:33
以@MrGrigri为例:如果你不想比较和保存数组中的随机数,你可以这样做,你不需要一个完整的npm包,并且可以控制你想要的4组的数量
/**
* generate groups of 4 random characters
* @example getUniqueId(1) : 607f
* @example getUniqueId(2) : 95ca-361a-f8a1-1e73
*/
export function getUniqueId(parts: number): string {
const stringArr = [];
for(let i = 0; i< parts; i++){
// tslint:disable-next-line:no-bitwise
const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
stringArr.push(S4);
}
return stringArr.join('-');
}
发布于 2019-03-27 03:59:15
我知道这可能会对一些用户有所帮助。这就是我过去所做的。我已经创建了一个Angular ID Service
,它跟踪我在整个项目中生成的所有ids。每次生成一个id时,都会对照所有其他id进行检查,以确保它是唯一的。有一个公共属性和两个公共方法。
记住
您必须在ngOnInit
方法中生成一个新的id,并在ngOnDestroy
方法中删除该id。如果在销毁组件时不能删除id,它们的id数组将变得非常大。
代码
ids: string[]
:这是服务中存储的所有唯一in的列表,以确保唯一性。
generate(): string
:此方法将以字符串的形式生成并返回唯一的id;输出:例如bec331aa-1566-1f59-1bf1-0a709be9a710
remove(id: string): void
:此方法将从存储的id数组中删除给定的id。
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class IdService {
public ids: string[] = [];
constructor() {}
public generate(): string {
let isUnique = false;
let tempId = '';
while (!isUnique) {
tempId = this.generator();
if (!this.idExists(tempId)) {
isUnique = true;
this.ids.push(tempId);
}
}
return tempId;
}
public remove(id: string): void {
const index = this.ids.indexOf(id);
this.ids.splice(index, 1);
}
private generator(): string {
const isString = `${this.S4()}${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}${this.S4()}${this.S4()}`;
return isString;
}
private idExists(id: string): boolean {
return this.ids.includes(id);
}
private S4(): string {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
}
https://stackoverflow.com/questions/52836247
复制相似问题