anchor.diff:  //- TODO: if function injection is useful explain or illustrate why.
   :marked
     ### Non-class dependencies
  -p
  -  | What if the dependency value isn't a class? Sometimes the thing we want to inject is a
  -  block non-class-dep-eg
  -    span string, function, or object.
  -p
  -  | Applications often define configuration objects with lots of small facts
  -  | (like the title of the application or the address of a web API endpoint)
  -  block config-obj-maps
  -    | &nbsp;but these configuration objects aren't always instances of a class.
  -    | They can be object literals
  -  | &nbsp;such as this one:
  +  ### 非类依赖
  +
  +  What if the dependency value isn't a class? Sometimes the thing we want to inject is a string, function, or object.
  +
  +  如果依赖值不是一个类呢？有时候我们想要注入的东西是一个字符串，函数或者对象。
  +
  +  Applications often define configuration objects with lots of small facts(like the title of the application or
  +  the address of a web API endpoint) &nbsp;but these configuration objects aren't always instances of a class.
  +  They can be object literals &nbsp;such as this one:
  +
  +  应用程序经常为很多很小的因素（比如应用程序的标题，或者一个网络API终点的地址）定义配置对象，但是这些配置对象不总是类的实例。
  +  他们可能是对象，比如下面这个：
   
   +makeExample('dependency-injection/ts/app/app.config.ts','config','app/app-config.ts (excerpt)')(format='.')
   
  
positive.code:   See more `useValue` examples in the
    [Non-class dependencies](#non-class-dependencies) and
    [OpaqueToken](#opaquetoken) sections.
  
  #factory-provider
  :marked
  
negative.code:   which makes this object play the logger role.
  
    于是我们可以通过`useValue`选项来注册一个供应商，它会让这个对象直接扮演logger的角色。
  
  - var stylePattern = { otl: /(useValue: \w*)/gm };
  +makeExample('dependency-injection/ts/app/providers.component.ts','providers-7', '', stylePattern)(format=".")
  