@@ -34,7 +34,7 @@ p Run the #[+liveExampleLink2()].
34
34
35
35
Our `Car` needs an engine and tires. Instead of asking for them,
36
36
the `Car` constructor instantiates its own copies from
37
- the very specific classes, `Engine` and `Tires`.
37
+ the very specific classes `Engine` and `Tires`.
38
38
39
39
What if the `Engine` class evolves and its constructor requires a parameter?
40
40
Our `Car` is broken and stays broken until we rewrite it along the lines of
@@ -422,9 +422,9 @@ block injectable-not-always-needed-in-ts
422
422
423
423
We *can* add it if we really want to. It isn't necessary because the
424
424
`HeroesComponent` is already marked with `@Component`, and this
425
- !{_decorator} class (like `@Directive` and `@Pipe` which we will study later
426
- on) is a subtype of <a href="#{injMetaUrl}">InjectableMetadata</a>. It is in
427
- fact <a href="#{injMetaUrl}"> InjectableMetadata</a> #{_decorator}s that
425
+ !{_decorator} class (like `@Directive` and `@Pipe`, which we'll learn about later)
426
+ is a subtype of <a href="#{injMetaUrl}">InjectableMetadata</a>. It is in
427
+ fact ` InjectableMetadata` #{_decorator}s that
428
428
identify a class as a target for instantiation by an injector.
429
429
430
430
block ts-any-decorator-will-do
@@ -701,7 +701,7 @@ block dart-diff-const-metadata-ctor
701
701
+ makeTabs(
702
702
` dependency-injection/ts/app/heroes/heroes.component.ts,
703
703
dependency-injection/ts/app/heroes/heroes.component.1.ts` ,
704
- null ,
704
+ ',full' ,
705
705
` app/heroes/heroes.component (v3),
706
706
app/heroes/heroes.component (v2)` ,
707
707
stylePattern)
@@ -813,16 +813,17 @@ block dart-map-alternative
813
813
814
814
Our `HeroService` *requires* a `Logger`, but what if it could get by without
815
815
a logger?
816
- As is illustrated next, we can indicate that to the dependency injection
817
- framework by marking the constructor's argument as optional.
816
+ We can tell Angular that the dependency is optional by annotating the
817
+ constructor argument with `@Optional()`:
818
818
819
819
+ ifDocsFor('ts' )
820
820
+ makeExample('dependency-injection/ts/app/providers.component.ts' ,'import-optional' , '' )
821
821
+ makeExample('dependency-injection/ts/app/providers.component.ts' ,'provider-10-ctor' , '' )( format ='.' )
822
822
823
823
:marked
824
- Be prepared for a null logger. If we don't register one somewhere up the line,
825
- the injector will inject `null`.
824
+ When using `@Optional()`, our code must be prepared for a null value. If we
825
+ don't register a logger somewhere up the line, the injector will set the
826
+ value of `logger` to null.
826
827
827
828
.l-main-section
828
829
:marked
0 commit comments