1
+ /** @module decorators */
2
+ /** */
3
+
4
+ /**
5
+ * An ES7 decorator which maps resolve data to a component.
6
+ *
7
+ * Add this decorator to a property of your component.
8
+ * The decorator marks the component's property to receive resolve data.
9
+ *
10
+ * When resolve data of the same name (token) is found,
11
+ * the resolve data will be assigned to the component's property.
12
+ *
13
+ * #### Example:
14
+ *
15
+ * The component's properties receive resolve data from the state definition.
16
+ * ```js
17
+ * @Component ({ selector: 'foo' })
18
+ * export class FooComponent {
19
+ * @Resolve () resolveToken1;
20
+ * @Resolve ('resolveToken2') prop2;
21
+ * @Input () @Resolve() resolveToken3;
22
+ * }
23
+ *
24
+ * const fooState = {
25
+ * name: 'foo',
26
+ * component: FooComponent,
27
+ * resolve: [
28
+ * { token: 'resolveToken1', deps: [], resolveFn: resolve1Fn },
29
+ * { token: 'resolveToken2', deps: [], resolveFn: resolve2Fn },
30
+ * { token: 'resolveToken3', deps: [], resolveFn: resolve3Fn },
31
+ * ]
32
+ * }
33
+ * ```
34
+ *
35
+ * @param token The resolve token to bind to this property
36
+ * (if omitted, the property name is used as the token)
37
+ */
38
+ export function ResolveData ( token ?: string ) : PropertyDecorator {
39
+ return function ( target , property : string ) {
40
+ const inputs = target [ '__inputs' ] = target [ '__inputs' ] || { } ;
41
+ token = token || property ;
42
+ inputs [ token ] = property ;
43
+ } ;
44
+ }
0 commit comments