원클릭으로
angular-service
Generates an Angular service using Signals for state management
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Generates an Angular service using Signals for state management
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generates Angular animations for smooth UI transitions and interactions
Generates Angular components with best practices and patterns
Generates an Angular dialog component extending BaseDialogComponent
Generates Angular directives for DOM manipulation and behavior enhancement
Generates Angular error boundary components for graceful error handling
Generates an Angular feature component (Standalone, OnPush)
| name | angular-service |
| description | Generates an Angular service using Signals for state management |
This skill helps you generate Angular services following the project's pattern: Injectable({providedIn: 'root'}) and Signals for state.
When creating a new service, use this template:
import { Injectable, signal, computed } from "@angular/core";
@Injectable({
providedIn: "root",
})
export class {{Name}}Service {
// State
private stateSignal = signal<{{Type}}>(initialValue);
// Computed
readonly state = this.stateSignal.asReadonly();
readonly derivedState = computed(() => this.stateSignal().someProp);
constructor() {}
// Actions
updateState(newValue: {{Type}}) {
this.stateSignal.set(newValue);
}
modifyState(prop: any) {
this.stateSignal.update(state => ({ ...state, prop }));
}
}
import { Injectable, signal, computed } from '@angular/core';
import { SettingsStorageUtil } from '../utils/storage.util';
@Injectable({
providedIn: 'root',
})
export class SettingsService {
// State
private settingsSignal = signal<Record<string, unknown>>(SettingsStorageUtil.getAll());
// Computed
readonly settings = this.settingsSignal.asReadonly();
readonly allSettings = computed(() => this.settingsSignal());
constructor() {}
// Actions
get<T = unknown>(key: string, defaultValue: T | null = null): T | null {
const currentSettings = this.settingsSignal();
return (currentSettings[key] as T) ?? SettingsStorageUtil.get<T>(key, defaultValue);
}
set(key: string, value: unknown): boolean {
const success = SettingsStorageUtil.set(key, value);
if (success) {
this.settingsSignal.update((settings) => ({ ...settings, [key]: value }));
}
return success;
}
getAll(): Record<string, unknown> {
return this.settingsSignal();
}
reset(): boolean {
const success = SettingsStorageUtil.reset();
if (success) {
this.settingsSignal.set({});
}
return success;
}
}
signal for private mutable state.asReadonly() signals or computed values for public consumption.set or update methods for state modification.providedIn: 'root'.