Loading...
Loading...
Angular 21 development with modern best practices including signals, standalone components, reactive patterns, and accessibility. Use when creating Angular components, services, templates, or performing any Angular frontend development work. Covers TypeScript strict typing, signal-based state management, reactive forms, lazy loading, ng-icon setup, and Tailwind styling.
npx skill4agent add boise-state-development/agentcore-public-stack angular-best-practicesanyunknownstandalone: truechangeDetection: ChangeDetectionStrategy.OnPushinput()output()computed()classngClassstylengStyle@HostBinding@HostListenerhostcomputed()mutateupdatesetresource()const userResource = resource({
params: () => ({ id: userId() }),
loader: ({ params, abortSignal }) => fetch(`/api/users/${params.id}`, { signal: abortSignal }),
});
const userName = computed(() => userResource.hasValue() ? userResource.value().name : undefined);resourceparamsundefined'idle'abortSignalhasValue()value()'idle''loading''reloading''resolved''error''local'@if@for@switch*ngIf*ngFor*ngSwitchnew Date()providedIn: 'root'inject()@Injectable({ providedIn: 'root' })
export class UserService {
private readonly http = inject(HttpClient);
}export const routes: Routes = [
{
path: 'admin',
loadComponent: () => import('./admin/admin.page').then(m => m.AdminPage),
},
];file-name.page.tsfile-name.page.htmlfile-name.page.cssfile-name.component.tsfile-name.service.tsimport { NgIcon, provideIcons } from '@ng-icons/core';
import { heroSparkles, heroTrash } from '@ng-icons/heroicons/outline';
@Component({
selector: 'app-example',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [NgIcon],
providers: [provideIcons({ heroSparkles, heroTrash })],
template: `<ng-icon name="heroSparkles" />`,
})
export class ExampleComponent {}NgOptimizedImageNgOptimizedImage