UUIDに関連するいくつかのパッケージ、つまり https://www.npmjs.com/package/uuid-generator-ts と https://www.npmjs)を追加しようとします。 com/package/@ types/uuid 。しかし、これらのパッケージをインストールする場合、エラーが発生します。angular 6.でUUIDを生成する方法を教えてください。
Angular自体とは関係ありません。次のような人気のあるnpmパッケージの1つからuuidを取得できます。
https://www.npmjs.com/package/uuid
コードは次のようになります。
import * as uuid from 'uuid';
const myId = uuid.v4();
これは一部のユーザーを助けるかもしれないことを知っています。これは私が過去にやったことです。プロジェクト全体で生成したすべてのIDを追跡するAngular _ID Service
_を作成しました。IDが生成されるたびに、他のすべてのIDに対してチェックされます一意であることを保証するID。1つのパブリックプロパティと2つのパブリックメソッドがあります。
ngOnInit
メソッドで新しいIDを生成し、ngOnDestroy
メソッドでそのIDを削除する必要があります。コンポーネントが破棄されるときにidの削除に失敗すると、ids配列は非常に大きくなります。
_ids: string[]
_:これは、一意性を確保するためにサービスに保存されているすべての一意のIDのリストです。
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);
}
}
_
@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('-');
}