0 Tage Serie
javascript / expert
Snippet

Fortgeschrittene strukturelle Direktiven mit statischer Template-Absicherung

Strukturelle Direktiven können eine statische Methode namens 'ngTemplateContextGuard' verwenden, um dem Angular-Compiler Typinformationen über den Template-Kontext bereitzustellen. Dies ermöglicht eine strikte Typprüfung innerhalb des Templates (z. B. in einem *appAuth-Block) für die '$implicit'-Eigenschaft und andere Kontextmitglieder.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
interface UserContext<T> { $implicit: T; appAuth: string; }
@Directive({ selector: '[appAuth]' })
export class AuthDirective<T> {
// Static guard for template type checking
static ngTemplateContextGuard<T>(
dir: AuthDirective<T>,
ctx: any
): ctx is UserContext<T> { return true; }
constructor(private tr: TemplateRef<UserContext<T>>) {}
}
angular
Erklärung
1
static ngTemplateContextGuard<T>(...): ctx is UserContext<T>
Ein TypeScript-Typ-Prädikat, das dem Compiler die Struktur des im Template verwendeten Kontext-Objekts mitteilt.
2
constructor(private tr: TemplateRef<UserContext<T>>)
Injeziert das Template mit einem spezifischen Kontext-Typ, um interne Konsistenz zu gewährleisten.