02_directives.html 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674
  1. <!DOCTYPE HTML>
  2. <html lang="" >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  6. <title>directives_源码解析 · 代码收集</title>
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  8. <meta name="description" content="">
  9. <meta name="generator" content="GitBook 3.1.1">
  10. <link rel="stylesheet" href="../../../gitbook/style.css">
  11. <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-search-pro/search.css">
  12. <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-highlight/website.css">
  13. <meta name="HandheldFriendly" content="true"/>
  14. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  15. <meta name="apple-mobile-web-app-capable" content="yes">
  16. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  17. <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../../gitbook/images/apple-touch-icon-precomposed-152.png">
  18. <link rel="shortcut icon" href="../../../gitbook/images/favicon.ico" type="image/x-icon">
  19. <link rel="next" href="03_ng_model.html" />
  20. <link rel="prev" href="01_formControl.html" />
  21. </head>
  22. <body>
  23. <div class="gb-page-wrapper">
  24. <header class="gb-page-header">
  25. <div class="container">
  26. <div id="book-search-input" role="search">
  27. <input type="text" placeholder="Type to search" />
  28. </div>
  29. <a href="../../.." class="logo">
  30. <img src="../../../gitbook/images/logo/128.png">
  31. <h1>代码收集</h1>
  32. </a>
  33. <a href="https://github.com/seamong/myBlogs/blob/doc/angular/study_notes/from/02_directives.md" target="_blank" class="btn btn-link pull-right hidden-xs">
  34. <i class="octicon octicon-mark-github"></i> 在GitHub编辑本页
  35. </a>
  36. <a href="../../../faq.md" class="btn btn-link pull-right hidden-xs">
  37. F.A.Q
  38. </a>
  39. <a href="https://github.com/seamong/myBlogs/README.md" target="_blank" class="btn btn-link pull-right hidden-xs">
  40. 当前版本0.0.1
  41. </a>
  42. </div>
  43. </header>
  44. <div class="gb-page-body">
  45. <div class="gb-page-inner">
  46. <div class="container">
  47. <div class="row">
  48. <div class="col-md-3">
  49. <div class="panel panel-default">
  50. <div class="panel-heading">
  51. <h3 class="panel-title">介绍</h3>
  52. </div>
  53. <div class="list-group">
  54. <a href="../../../" class="list-group-item ">
  55. 关于本文档
  56. </a>
  57. </div>
  58. </div>
  59. <div class="panel panel-default">
  60. <div class="panel-heading">
  61. <h3 class="panel-title">JavaScript</h3>
  62. </div>
  63. <div class="list-group">
  64. <a href="../../../JavaScript/principle/" class="list-group-item ">
  65. <i class="octicon octicon-chevron-right"></i>
  66. 原理解析
  67. </a>
  68. <a href="../../../JavaScript/cases/" class="list-group-item ">
  69. <i class="octicon octicon-chevron-right"></i>
  70. 案例解析
  71. </a>
  72. </div>
  73. </div>
  74. <div class="panel panel-default">
  75. <div class="panel-heading">
  76. <h3 class="panel-title">angular</h3>
  77. </div>
  78. <div class="list-group">
  79. <a href="../" class="list-group-item ">
  80. <i class="octicon octicon-chevron-down"></i>
  81. Study notes
  82. </a>
  83. <a href="../0_depend.html" class="list-group-item ">
  84. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  85. 项目依赖
  86. </a>
  87. <a href="../01_built-in_instructions.html" class="list-group-item ">
  88. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  89. 内置指令
  90. </a>
  91. <a href="./" class="list-group-item ">
  92. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  93. <i class="octicon octicon-chevron-down"></i>
  94. 表单
  95. </a>
  96. <a href="0_template_case.html" class="list-group-item ">
  97. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  98. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  99. 模板案例
  100. </a>
  101. <a href="01_formControl.html" class="list-group-item ">
  102. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  103. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  104. formControl
  105. </a>
  106. <a href="02_directives.html" class="list-group-item active">
  107. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  108. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  109. directives_源码解析
  110. </a>
  111. <a href="03_ng_model.html" class="list-group-item ">
  112. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  113. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  114. ngModel
  115. </a>
  116. <a href="04_Form-Validation_&_Custom-Validator.html" class="list-group-item ">
  117. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  118. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  119. 表单验证&自定义验证器
  120. </a>
  121. <a href="05_Listen_to_form_data_changes.html" class="list-group-item ">
  122. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  123. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  124. 监听表单数据变化
  125. </a>
  126. <a href="06_Problem_collection.html" class="list-group-item ">
  127. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  128. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  129. 问题收集
  130. </a>
  131. <a href="../../ng.html" class="list-group-item ">
  132. ng
  133. </a>
  134. </div>
  135. </div>
  136. <div class="panel panel-default">
  137. <div class="panel-heading">
  138. <h3 class="panel-title">css</h3>
  139. </div>
  140. <div class="list-group">
  141. <a href="../../../css/principle/" class="list-group-item ">
  142. 原理解析
  143. </a>
  144. <a href="../../../css/cases/" class="list-group-item ">
  145. <i class="octicon octicon-chevron-right"></i>
  146. 案例收集
  147. </a>
  148. </div>
  149. </div>
  150. <div class="panel panel-default">
  151. <div class="panel-heading">
  152. <h3 class="panel-title">vue</h3>
  153. </div>
  154. <div class="list-group">
  155. <a href="../../../vue/components/" class="list-group-item ">
  156. <i class="octicon octicon-chevron-right"></i>
  157. components
  158. </a>
  159. <a href="../../../vue/router/" class="list-group-item ">
  160. <i class="octicon octicon-chevron-right"></i>
  161. router
  162. </a>
  163. <a href="../../../vue/vuex/" class="list-group-item ">
  164. VUE
  165. </a>
  166. </div>
  167. </div>
  168. <div class="panel panel-default">
  169. <div class="panel-heading">
  170. <h3 class="panel-title">ubuntu</h3>
  171. </div>
  172. <div class="list-group">
  173. <a href="../../../ubuntu/serves/" class="list-group-item ">
  174. <i class="octicon octicon-chevron-right"></i>
  175. 服务器生存指南
  176. </a>
  177. <a href="../../../ubuntu/instruction.html" class="list-group-item ">
  178. 常用指令
  179. </a>
  180. </div>
  181. </div>
  182. <div class="panel panel-default">
  183. <div class="panel-heading">
  184. <h3 class="panel-title">GIT</h3>
  185. </div>
  186. <div class="list-group">
  187. <a href="../../../git/git.html" class="list-group-item ">
  188. git 命令
  189. </a>
  190. </div>
  191. </div>
  192. <div class="panel panel-default">
  193. <div class="list-group">
  194. <a href="../../../other/faq.html" class="list-group-item ">
  195. FAQ
  196. </a>
  197. <a href="../../../other/examples.html" class="list-group-item ">
  198. Examples
  199. </a>
  200. </div>
  201. </div>
  202. </div>
  203. <div class="col-md-9">
  204. <div id="book-search-results">
  205. <div class="search-noresults">
  206. <div class="gb-markdown book-page-inner">
  207. <pre><code class="lang-typescript"><span class="hljs-comment">/**
  208. * @license
  209. * Copyright Google Inc. All Rights Reserved.
  210. *
  211. * Use of this source code is governed by an MIT-style license that can be
  212. * found in the LICENSE file at https://angular.io/license
  213. */</span>
  214. <span class="hljs-keyword">import</span> { ChangeDetectionStrategy } from <span class="hljs-string">&apos;../change_detection/constants&apos;</span>;
  215. <span class="hljs-keyword">import</span> { Provider } from <span class="hljs-string">&apos;../di&apos;</span>;
  216. <span class="hljs-keyword">import</span> { Type } from <span class="hljs-string">&apos;../type&apos;</span>;
  217. <span class="hljs-keyword">import</span> { TypeDecorator } from <span class="hljs-string">&apos;../util/decorators&apos;</span>;
  218. <span class="hljs-keyword">import</span> { ViewEncapsulation } from <span class="hljs-string">&apos;./view&apos;</span>;
  219. <span class="hljs-comment">/**
  220. * &#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x3002;
  221. *
  222. * @stable
  223. */</span>
  224. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> DirectiveDecorator {
  225. <span class="hljs-comment">/**
  226. * @&#x5B83;&#x80FD;&#x505A;&#x4EC0;&#x4E48; &#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;Angular&#x6307;&#x4EE4;&#xFF0C;&#x5E76;&#x6536;&#x96C6;&#x6307;&#x4EE4;&#x914D;&#x7F6E;
  227. * &#x5143;&#x6570;&#x636E;.
  228. *
  229. * @&#x5982;&#x4F55;&#x4F7F;&#x7528;
  230. *
  231. * `.``
  232. * import {Directive} from &apos;@angular/core&apos;;
  233. *
  234. * @Directive({
  235. * selector: &apos;my-directive&apos;,
  236. * })
  237. * export class MyDirective {
  238. * }
  239. * `.``
  240. *
  241. * @&#x63CF;&#x8FF0;
  242. *
  243. * &#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;&#x5141;&#x8BB8;&#x60A8;&#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;Angular&#x6307;&#x4EE4;&#xFF0C;&#x5E76;&#x63D0;&#x4F9B;&#x5176;&#x4ED6;&#x5143;&#x6570;&#x636E;&#xFF0C;
  244. * &#x4EE5;&#x786E;&#x5B9A;&#x5982;&#x4F55;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x5904;&#x7406;&#xFF0C;&#x5B9E;&#x4F8B;&#x5316;&#x548C;&#x4F7F;&#x7528;&#x4F2A;&#x6307;&#x4EE4;&#x3002;
  245. *
  246. * &#x6307;&#x4EE4;&#x5141;&#x8BB8;&#x60A8;&#x5C06;&#x884C;&#x4E3A;&#x9644;&#x52A0;&#x5230;DOM&#x4E2D;&#x7684;&#x5143;&#x7D20;
  247. *
  248. * &#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x5FC5;&#x987B;&#x5C5E;&#x4E8E;&#x4E00;&#x4E2A;NgModule&#xFF0C;
  249. * &#x4EE5;&#x4FBF;&#x5B83;&#x88AB;&#x53E6;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#xFF0C;&#x7EC4;&#x4EF6;&#x6216;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#x3002;
  250. * &#x8981;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x662F;NgModule&#x7684;&#x6210;&#x5458;&#xFF0C;
  251. * &#x60A8;&#x5E94;&#x8BE5;&#x5C06;&#x5176;&#x5217;&#x5728;&#x8BE5;NgModule&#x7684;&#x201C;&#x58F0;&#x660E;&#x201D;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;
  252. *
  253. * &#x9664;&#x4E86;&#x901A;&#x8FC7;&#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;&#x6307;&#x5B9A;&#x7684;&#x5143;&#x6570;&#x636E;&#x914D;&#x7F6E;&#x4E4B;&#x5916;,
  254. * &#x6307;&#x4EE4;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x5B9E;&#x73B0;&#x5404;&#x79CD;&#x751F;&#x547D;&#x5468;&#x671F;&#x94A9;&#x5B50;&#x6765;&#x63A7;&#x5236;&#x5176;&#x8FD0;&#x884C;&#x65F6;&#x884C;&#x4E3A;.
  255. *
  256. * **&#x5143;&#x6570;&#x636E;&#x5C5E;&#x6027;:**
  257. *
  258. * * **exportAs** - &#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5BFC;&#x51FA;&#x7684;&#x540D;&#x79F0;
  259. * * **host** - &#x7C7B;&#x5C5E;&#x6027;&#x6620;&#x5C04;&#x5230;&#x4E8B;&#x4EF6;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7ED1;&#x5B9A;
  260. * * **inputs** - &#x5C06;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x5217;&#x8868;&#x4F5C;&#x4E3A;&#x7EC4;&#x4EF6;&#x8F93;&#x5165;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;
  261. * * **outputs** - &#x5217;&#x51FA;&#x5176;&#x4ED6;&#x53EF;&#x4EE5;&#x8BA2;&#x9605;&#x7684;&#x8F93;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;
  262. * * **providers** - &#x8BE5;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x5B50;&#x7EC4;&#x4EF6;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  263. * * **queries** - &#x914D;&#x7F6E;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7EC4;&#x4EF6;&#x7684;&#x67E5;&#x8BE2;
  264. * * **selector** - css&#x9009;&#x62E9;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x6B64;&#x7EC4;&#x4EF6;
  265. *
  266. * @&#x7A33;&#x5B9A;
  267. * @&#x6CE8;&#x89E3;
  268. */</span>
  269. (obj: Directive): TypeDecorator;
  270. <span class="hljs-comment">/**
  271. * &#x8BF7;&#x53C2;&#x9605;{@link&#x6307;&#x4EE4;}&#x88C5;&#x9970;&#x5668;&#x3002;
  272. */</span>
  273. <span class="hljs-keyword">new</span> (obj: Directive): Directive;
  274. }
  275. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Directive {
  276. <span class="hljs-comment">/**
  277. * &#x89E6;&#x53D1;&#x5B9E;&#x4F8B;&#x5316;&#x6307;&#x4EE4;&#x7684;CSS&#x9009;&#x62E9;&#x5668;&#x3002;
  278. *
  279. * Angular&#x4EC5;&#x5141;&#x8BB8;&#x6307;&#x4EE4;&#x89E6;&#x53D1;&#x4E0D;&#x8DE8;&#x8D8A;&#x5143;&#x7D20;&#x8FB9;&#x754C;&#x7684;CSS&#x9009;&#x62E9;&#x5668;&#x3002;
  280. *
  281. * `selector` &#x53EF;&#x4EE5;&#x88AB;&#x58F0;&#x660E;&#x4E3A;&#x4EE5;&#x4E0B;&#x4E4B;&#x4E00;:
  282. *
  283. * - `element-name`: &#x6309;&#x5143;&#x7D20;&#x540D;&#x79F0;&#x9009;&#x62E9;.
  284. * - `.class`: &#x6309;&#x7C7B;&#x540D;&#x9009;&#x62E9;.
  285. * - `[attribute]`: &#x6309;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x9009;&#x62E9;.
  286. * - `[attribute=value]`: &#x6309;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x548C;&#x503C;&#x9009;&#x62E9;.
  287. * - `:not(sub_selector)`: &#x53EA;&#x6709;&#x5F53;&#x5143;&#x7D20;&#x4E0D;&#x5339;&#x914D;`sub_selector`&#x65F6;&#x624D;&#x9009;&#x62E9;.
  288. * - `selector1, selector2`: &#x9009;&#x62E9;&#x201C;selector1&#x201D;&#x6216;&#x201C;selector2&#x201D;&#x662F;&#x5426;&#x5339;&#x914D;.
  289. *
  290. *
  291. * ### &#x4F8B;
  292. *
  293. * &#x5047;&#x8BBE;&#x6211;&#x4EEC;&#x6709;&#x4E00;&#x4E2A;`input [type = text]&#x9009;&#x62E9;&#x5668;&#x7684;&#x6307;&#x4EE4;&#x3002;
  294. *
  295. * &#x548C;&#x4EE5;&#x4E0B;HTML:
  296. *
  297. * `.``html
  298. * &lt;form&gt;
  299. * &lt;input type=&quot;text&quot;&gt;
  300. * &lt;input type=&quot;radio&quot;&gt;
  301. * &lt;form&gt;
  302. * `.``
  303. *
  304. * &#x8BE5;&#x6307;&#x4EE4;&#x53EA;&#x80FD;&#x5728;`&lt;input type =&#x201C;text&#x201D;&gt;&#x201C;&#x5143;&#x7D20;&#x4E0A;&#x5B9E;&#x4F8B;&#x5316;.
  305. *
  306. */</span>
  307. selector?: <span class="hljs-built_in">string</span>;
  308. <span class="hljs-comment">/**
  309. * &#x679A;&#x4E3E;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x8F93;&#x5165;&#x5C5E;&#x6027;&#x96C6;
  310. *
  311. * Angular&#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#x81EA;&#x52A8;&#x66F4;&#x65B0;&#x8F93;&#x5165;&#x5C5E;&#x6027;.
  312. *
  313. * `inputs`&#x5C5E;&#x6027;&#x5C06;&#x4E00;&#x7EC4;`directiveProperty`&#x5B9A;&#x4E49;&#x4E3A;`bindingProperty`
  314. &#x7EC4;&#x6001;:
  315. *
  316. * - `directiveProperty`&#x6307;&#x5B9A;&#x5199;&#x5165;&#x503C;&#x7684;&#x7EC4;&#x4EF6;&#x5C5E;&#x6027;.
  317. * - `bindingProperty`&#x6307;&#x5B9A;&#x8BFB;&#x53D6;&#x503C;&#x7684;DOM&#x5C5E;&#x6027;.
  318. *
  319. * &#x5F53;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;`bindingProperty`&#x65F6;&#xFF0C;&#x5B83;&#x88AB;&#x5047;&#x5B9A;&#x4E3A;&#x7B49;&#x4E8E;`directiveProperty`.
  320. *
  321. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/ivhfXY?p=preview&#xFF09;&#xFF09;
  322. *
  323. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x5177;&#x6709;&#x4E24;&#x4E2A;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x5C5E;&#x6027;&#x7684;&#x7EC4;&#x4EF6;.
  324. *
  325. * `.``typescript
  326. * @Component({
  327. * selector: &apos;bank-account&apos;,
  328. * inputs: [&apos;bankName&apos;, &apos;id: account-id&apos;],
  329. * template: `
  330. * Bank Name: {{bankName}}
  331. * Account Id: {{id}}
  332. * `
  333. * })
  334. * class BankAccount {
  335. * bankName: string;
  336. * id: string;
  337. *
  338. * // &#x6B64;&#x5C5E;&#x6027;&#x672A;&#x7ED1;&#x5B9A;&#xFF0C;&#x4E0D;&#x4F1A;&#x88AB;Angular&#x81EA;&#x52A8;&#x66F4;&#x65B0;
  339. * normalizedBankName: string;
  340. * }
  341. *
  342. * @Component({
  343. * selector: &apos;app&apos;,
  344. * template: `
  345. * &lt;bank-account bank-name=&quot;RBC&quot; account-id=&quot;4747&quot;&gt;&lt;/bank-account&gt;
  346. * `
  347. * })
  348. * class App {}
  349. * `.``
  350. *
  351. */</span>
  352. inputs?: <span class="hljs-built_in">string</span>[];
  353. <span class="hljs-comment">/**
  354. * &#x679A;&#x4E3E;&#x4E00;&#x7EC4;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x7684;&#x8F93;&#x51FA;&#x5C5E;&#x6027;&#x3002;
  355. *
  356. * &#x5F53;&#x8F93;&#x51FA;&#x5C5E;&#x6027;&#x53D1;&#x51FA;&#x4E00;&#x4E2A;&#x4E8B;&#x4EF6;&#x65F6;&#xFF0C;&#x9644;&#x52A0;&#x5230;&#x8BE5;&#x4E8B;&#x4EF6;&#x7684;&#x4E8B;&#x4EF6;&#x5904;&#x7406;&#x7A0B;&#x5E8F;&#x8C03;&#x7528;&#x8BE5;&#x6A21;&#x677F;&#x3002;
  357. *
  358. * `outputs`&#x5C5E;&#x6027;&#x5C06;&#x4E00;&#x7EC4;`directiveProperty`&#x5B9A;&#x4E49;&#x4E3A;`bindingProperty`&#x914D;&#x7F6E;:
  359. *
  360. * - `directiveProperty`&#x6307;&#x5B9A;&#x53D1;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7EC4;&#x4EF6;&#x5C5E;&#x6027;.
  361. * - `bindingProperty`&#x6307;&#x5B9A;&#x4E8B;&#x4EF6;&#x5904;&#x7406;&#x7A0B;&#x5E8F;&#x6240;&#x9644;&#x52A0;&#x7684;DOM&#x5C5E;&#x6027;.
  362. *
  363. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/d5CNq7?p=preview&#xFF09;&#xFF09;
  364. *
  365. * `.``typescript
  366. * @Directive({
  367. * selector: &apos;interval-dir&apos;,
  368. * outputs: [&apos;everySecond&apos;, &apos;five5Secs: everyFiveSeconds&apos;]
  369. * })
  370. * class IntervalDir {
  371. * everySecond = new EventEmitter();
  372. * five5Secs = new EventEmitter();
  373. *
  374. * constructor() {
  375. * setInterval(() =&gt; this.everySecond.emit(&quot;event&quot;), 1000);
  376. * setInterval(() =&gt; this.five5Secs.emit(&quot;event&quot;), 5000);
  377. * }
  378. * }
  379. *
  380. * @Component({
  381. * selector: &apos;app&apos;,
  382. * template: `
  383. * &lt;interval-dir (everySecond)=&quot;everySecond()&quot; (everyFiveSeconds)=&quot;everyFiveSeconds()&quot;&gt;
  384. * &lt;/interval-dir&gt;
  385. * `
  386. * })
  387. * class App {
  388. * everySecond() { console.log(&apos;second&apos;); }
  389. * everyFiveSeconds() { console.log(&apos;five seconds&apos;); }
  390. * }
  391. * `.``
  392. *
  393. */</span>
  394. outputs?: <span class="hljs-built_in">string</span>[];
  395. <span class="hljs-comment">/**
  396. * &#x6307;&#x5B9A;&#x4E0E;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x76F8;&#x5173;&#x7684;&#x4E8B;&#x4EF6;&#xFF0C;&#x64CD;&#x4F5C;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;.
  397. *
  398. * ## &#x4E3B;&#x673A;&#x76D1;&#x542C;&#x5668;
  399. *
  400. * &#x901A;&#x8FC7;&#x4E00;&#x7EC4;`&#xFF08;event&#xFF09;`&#x6307;&#x5411;`method`&#x6765;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x4FA6;&#x542C;&#x54EA;&#x4E2A;DOM&#x4E8B;&#x4EF6;
  401. * &#x952E;&#x503C;&#x5BF9;:
  402. *
  403. * - `event`: &#x6307;&#x4EE4;&#x76D1;&#x542C;&#x7684;DOM&#x4E8B;&#x4EF6;.
  404. * - `statement`: &#x53D1;&#x751F;&#x4E8B;&#x4EF6;&#x65F6;&#x6267;&#x884C;&#x7684;&#x8BED;&#x53E5;.
  405. * &#x5982;&#x679C;&#x8BE5;&#x8BED;&#x53E5;&#x7684;&#x8BC4;&#x4F30;&#x8FD4;&#x56DE;`false`&#xFF0C;&#x90A3;&#x4E48;`preventDefault`&#x5E94;&#x7528;&#x4E8E;DOM&#x4E8B;&#x4EF6;
  406. *
  407. * &#x8981;&#x4FA6;&#x542C;&#x5168;&#x5C40;&#x4E8B;&#x4EF6;&#xFF0C;&#x5FC5;&#x987B;&#x5C06;&#x4E8B;&#x4EF6;&#x540D;&#x79F0;&#x6DFB;&#x52A0;&#x5230;&#x76EE;&#x6807;.
  408. * &#x76EE;&#x6807;&#x53EF;&#x4EE5;&#x662F;&#x201C;window&#x201D;&#xFF0C;&#x201C;document&#x201D;&#x6216;&#x201C;body&#x201D;.
  409. *
  410. * &#x7F16;&#x5199;&#x6307;&#x4EE4;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x65F6;&#xFF0C;&#x8FD8;&#x53EF;&#x4EE5;&#x53C2;&#x8003;$ event&#x5C40;&#x90E8;&#x53D8;&#x91CF;.
  411. *
  412. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/DlA5KU?p=preview&#xFF09;&#xFF09;
  413. *
  414. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x58F0;&#x660E;&#x5C06;&#x70B9;&#x51FB;&#x76D1;&#x542C;&#x5668;&#x9644;&#x52A0;&#x5230;&#x6309;&#x94AE;&#x5E76;&#x8BA1;&#x6570;&#x70B9;&#x51FB;&#x7684;&#x6307;&#x4EE4;.
  415. *
  416. * `.``typescript
  417. * @Directive({
  418. * selector: &apos;button[counting]&apos;,
  419. * host: {
  420. * &apos;(click)&apos;: &apos;onClick($event.target)&apos;
  421. * }
  422. * })
  423. * class CountClicks {
  424. * numberOfClicks = 0;
  425. *
  426. * onClick(btn) {
  427. * console.log(&quot;button&quot;, btn, &quot;number of clicks:&quot;, this.numberOfClicks++);
  428. * }
  429. * }
  430. *
  431. * @Component({
  432. * selector: &apos;app&apos;,
  433. * template: `&lt;button counting&gt;Increment&lt;/button&gt;`
  434. * })
  435. * class App {}
  436. * `.``
  437. *
  438. * ## &#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;
  439. *
  440. * &#x6307;&#x5B9A;&#x6307;&#x4EE4;&#x66F4;&#x65B0;&#x7684;DOM&#x5C5E;&#x6027;&#x3002;
  441. *
  442. * &#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#xFF0C;Angular&#x4F1A;&#x81EA;&#x52A8;&#x68C0;&#x67E5;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  443. * &#x5982;&#x679C;&#x7ED1;&#x5B9A;&#x66F4;&#x6539;&#xFF0C;&#x5B83;&#x5C06;&#x66F4;&#x65B0;&#x6307;&#x4EE4;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;.
  444. *
  445. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/gNg0ED?p=preview&#xFF09;&#xFF09;
  446. *
  447. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x4E86;&#x4E00;&#x4E2A;&#x5728;DOM&#x5143;&#x7D20;&#x4E0A;&#x8BBE;&#x7F6E;&#x201C;valid&#x201D;&#x548C;&#x201C;invalid&#x201D;&#x7C7B;&#x7684;&#x6307;&#x4EE4;&#xFF0C;
  448. * &#x8BE5;&#x5143;&#x7D20;&#x5177;&#x6709;ngModel&#x4F2A;&#x6307;&#x4EE4;.
  449. *
  450. * `.``typescript
  451. * @Directive({
  452. * selector: &apos;[ngModel]&apos;,
  453. * host: {
  454. * &apos;[class.valid]&apos;: &apos;valid&apos;,
  455. * &apos;[class.invalid]&apos;: &apos;invalid&apos;
  456. * }
  457. * })
  458. * class NgModelStatus {
  459. * constructor(public control:NgModel) {}
  460. * get valid { return this.control.valid; }
  461. * get invalid { return this.control.invalid; }
  462. * }
  463. *
  464. * @Component({
  465. * selector: &apos;app&apos;,
  466. * template: `&lt;input [(ngModel)]=&quot;prop&quot;&gt;`
  467. * })
  468. * class App {
  469. * prop;
  470. * }
  471. * `.``
  472. *
  473. * ## &#x5C5E;&#x6027;
  474. *
  475. * &#x6307;&#x5B9A;&#x5E94;&#x4F20;&#x64AD;&#x5230;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7684;&#x9759;&#x6001;&#x5C5E;&#x6027;.
  476. *
  477. * ### &#x4F8B;
  478. *
  479. * &#x5728;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;
  480. * &#x4F7F;&#x7528;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#xFF08;&#x8FD9;&#x91CC;&#xFF1A;`&lt;div&gt;`&#xFF09;&#x4E0A;&#x7684;`my-button`&#x6307;&#x4EE4;
  481. * &#xFF08;&#x4F8B;&#x5982;&#xFF1A;`&lt;div my-button&gt; &lt;/ div&gt;`&#xFF09;&#x5C06;&#x786E;&#x4FDD;&#x8BE5;&#x5143;&#x7D20;&#x5C06;&#x83B7;&#x5F97;&#x201C;&#x6309;&#x94AE; &#x201C;&#x89D2;&#x8272;&#x3002;.
  482. *
  483. * `.``typescript
  484. * @Directive({
  485. * selector: &apos;[my-button]&apos;,
  486. * host: {
  487. * &apos;role&apos;: &apos;button&apos;
  488. * }
  489. * })
  490. * class MyButton {
  491. * }
  492. * `.``
  493. */</span>
  494. host?: {
  495. [key: <span class="hljs-built_in">string</span>]: <span class="hljs-built_in">string</span>;
  496. };
  497. <span class="hljs-comment">/**
  498. * &#x5B9A;&#x4E49;&#x6307;&#x4EE4;&#x548C;&#x5176;&#x8F7B;&#x578B;DOM&#x5B50;&#x9879;&#x53EF;&#x89C1;&#x7684;&#x53EF;&#x6CE8;&#x5C04;&#x5BF9;&#x8C61;&#x96C6;&#x5408;.
  499. *
  500. * ## &#x7B80;&#x4F8B;
  501. *
  502. * &#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7684;&#x7C7B;&#x7684;&#x4F8B;&#x5B50;:
  503. *
  504. * `.``
  505. * class Greeter {
  506. * greet(name:string) {
  507. * return &apos;Hello &apos; + name + &apos;!&apos;;
  508. * }
  509. * }
  510. *
  511. * @Directive({
  512. * selector: &apos;greet&apos;,
  513. * providers: [
  514. * Greeter
  515. * ]
  516. * })
  517. * class HelloWorld {
  518. * greeter:Greeter;
  519. *
  520. * constructor(greeter:Greeter) {
  521. * this.greeter = greeter;
  522. * }
  523. * }
  524. * `.``
  525. */</span>
  526. providers?: Provider[];
  527. <span class="hljs-comment">/**
  528. * &#x5B9A;&#x4E49;&#x53EF;&#x4EE5;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;&#xFF0C;&#x4EE5;&#x5C06;&#x6B64;&#x6307;&#x4EE4;&#x5206;&#x914D;&#x7ED9;&#x53D8;&#x91CF;.
  529. *
  530. * ## &#x7B80;&#x4F8B;
  531. *
  532. * `.``
  533. * @Directive({
  534. * selector: &apos;child-dir&apos;,
  535. * exportAs: &apos;child&apos;
  536. * })
  537. * class ChildDir {
  538. * }
  539. *
  540. * @Component({
  541. * selector: &apos;main&apos;,
  542. * template: `&lt;child-dir #c=&quot;child&quot;&gt;&lt;/child-dir&gt;`
  543. * })
  544. * class MainComponent {
  545. * }
  546. *
  547. * `.``
  548. */</span>
  549. exportAs?: <span class="hljs-built_in">string</span>;
  550. <span class="hljs-comment">/**
  551. * &#x914D;&#x7F6E;&#x5C06;&#x6CE8;&#x5165;&#x5230;&#x6307;&#x4EE4;&#x4E2D;&#x7684;&#x67E5;&#x8BE2;.
  552. *
  553. * &#x5185;&#x5BB9;&#x67E5;&#x8BE2;&#x5728;&#x8C03;&#x7528;`ngAfterContentInit`&#x56DE;&#x8C03;&#x4E4B;&#x524D;&#x8BBE;&#x7F6E;.
  554. * &#x67E5;&#x8BE2;&#x67E5;&#x8BE2;&#x662F;&#x5728;&#x8C03;&#x7528;`ngAfterViewInit`&#x56DE;&#x8C03;&#x4E4B;&#x524D;&#x8BBE;&#x7F6E;&#x7684;.
  555. *
  556. * ### &#x4F8B;
  557. *
  558. * `.``
  559. * @Component({
  560. * selector: &apos;someDir&apos;,
  561. * queries: {
  562. * contentChildren: new ContentChildren(ChildDirective),
  563. * viewChildren: new ViewChildren(ChildDirective)
  564. * },
  565. * template: &apos;&lt;child-directive&gt;&lt;/child-directive&gt;&apos;
  566. * })
  567. * class SomeDir {
  568. * contentChildren: QueryList&lt;ChildDirective&gt;,
  569. * viewChildren: QueryList&lt;ChildDirective&gt;
  570. *
  571. * ngAfterContentInit() {
  572. * // &#x5185;&#x5BB9;&#x8282;&#x70B9;&#x8BBE;&#x7F6E;
  573. * }
  574. *
  575. * ngAfterViewInit() {
  576. * // &#x8BBE;&#x56FE;&#x8282;&#x70B9;&#x8BBE;&#x5728;
  577. * }
  578. * }
  579. * `.``
  580. */</span>
  581. queries?: {
  582. [key: <span class="hljs-built_in">string</span>]: <span class="hljs-built_in">any</span>;
  583. };
  584. }
  585. <span class="hljs-comment">/**
  586. * &#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  587. *
  588. * @&#x7A33;&#x5B9A;
  589. * @&#x6CE8;&#x89E3;
  590. */</span>
  591. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Directive: DirectiveDecorator;
  592. <span class="hljs-comment">/**
  593. * Component&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  594. *
  595. * @stable
  596. */</span>
  597. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> ComponentDecorator {
  598. <span class="hljs-comment">/**
  599. * @whatItDoes&#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;&#x89D2;&#x5EA6;&#x7EC4;&#x4EF6;&#x5E76;&#x6536;&#x96C6;&#x7EC4;&#x4EF6;&#x914D;&#x7F6E;&#x5143;&#x6570;&#x636E;.
  600. *
  601. * @&#x5982;&#x4F55;&#x4F7F;&#x7528;
  602. *
  603. * {@example core/ts/metadata/metadata.ts region=&apos;component&apos;}
  604. *
  605. * @&#x63CF;&#x8FF0;
  606. * &#x7EC4;&#x4EF6;&#x88C5;&#x9970;&#x5668;&#x5141;&#x8BB8;&#x60A8;&#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;&#x89D2;&#x5EA6;&#x7EC4;&#x4EF6;&#xFF0C;
  607. * &#x5E76;&#x63D0;&#x4F9B;&#x5176;&#x4ED6;&#x5143;&#x6570;&#x636E;&#xFF0C;&#x4EE5;&#x786E;&#x5B9A;&#x5982;&#x4F55;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x5904;&#x7406;&#xFF0C;
  608. * &#x5B9E;&#x4F8B;&#x5316;&#x548C;&#x4F7F;&#x7528;&#x7EC4;&#x4EF6;.
  609. *
  610. * &#x7EC4;&#x4EF6;&#x662F;Angular&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E2D;UI&#x6700;&#x57FA;&#x672C;&#x7684;&#x6784;&#x5EFA;&#x5757;.
  611. * Angular&#x5E94;&#x7528;&#x662F;&#x4E00;&#x4E2A;&#x89D2;&#x5EA6;&#x7684;&#x7EC4;&#x4EF6;&#x6811;.
  612. * Angular&#x7EC4;&#x4EF6;&#x662F;&#x6307;&#x4EE4;&#x7684;&#x4E00;&#x4E2A;&#x5B50;&#x96C6;&#x3002;
  613. * &#x4E0E;&#x6307;&#x4EE4;&#x4E0D;&#x540C;&#xFF0C;&#x7EC4;&#x4EF6;&#x59CB;&#x7EC8;&#x5177;&#x6709;&#x6A21;&#x677F;&#xFF0C;
  614. * &#x5E76;&#x4E14;&#x53EA;&#x80FD;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x5143;&#x7D20;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;.
  615. *
  616. * &#x7EC4;&#x4EF6;&#x5FC5;&#x987B;&#x5C5E;&#x4E8E;NgModule&#xFF0C;
  617. * &#x4EE5;&#x4FBF;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x53E6;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x6216;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#x3002;
  618. * &#x8981;&#x6307;&#x5B9A;&#x7EC4;&#x4EF6;&#x662F;NgModule&#x7684;&#x6210;&#x5458;&#xFF0C;
  619. * &#x5E94;&#x5C06;&#x5176;&#x5217;&#x5728;&#x8BE5;NgModule&#x7684;&#x201C;&#x58F0;&#x660E;&#x201D;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;
  620. *
  621. * &#x9664;&#x4E86;&#x901A;&#x8FC7;Component&#x88C5;&#x9970;&#x5668;&#x6307;&#x5B9A;&#x7684;&#x5143;&#x6570;&#x636E;&#x914D;&#x7F6E;&#x4E4B;&#x5916;,
  622. * &#x7EC4;&#x4EF6;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x5B9E;&#x73B0;&#x5404;&#x79CD;&#x751F;&#x547D;&#x5468;&#x671F;&#x94A9;&#x5B50;&#x6765;&#x63A7;&#x5236;&#x5176;&#x8FD0;&#x884C;&#x65F6;&#x884C;&#x4E3A;.
  623. *
  624. * **&#x5143;&#x6570;&#x636E;&#x5C5E;&#x6027;:**
  625. *
  626. * * **animations** - &#x8BE5;&#x7EC4;&#x4EF6;&#x7684;&#x52A8;&#x753B;&#x5217;&#x8868;
  627. * * **changeDetection** - &#x6539;&#x53D8;&#x8BE5;&#x7EC4;&#x4EF6;&#x4F7F;&#x7528;&#x7684;&#x68C0;&#x6D4B;&#x7B56;&#x7565;
  628. * * **encapsulation** - &#x8BE5;&#x7EC4;&#x4EF6;&#x4F7F;&#x7528;&#x7684;&#x6837;&#x5F0F;&#x5C01;&#x88C5;&#x7B56;&#x7565;
  629. * * **entryComponents** - &#x52A8;&#x6001;&#x63D2;&#x5165;&#x5230;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x89C6;&#x56FE;&#x4E2D;&#x7684;&#x7EC4;&#x4EF6;&#x5217;&#x8868;
  630. * * **exportAs** - &#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5BFC;&#x51FA;&#x7684;&#x540D;&#x79F0;
  631. * * **host** - &#x7C7B;&#x5C5E;&#x6027;&#x6620;&#x5C04;&#x5230;&#x4E8B;&#x4EF6;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7ED1;&#x5B9A;
  632. * * **inputs** - &#x5C06;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x5217;&#x8868;&#x4F5C;&#x4E3A;&#x7EC4;&#x4EF6;&#x8F93;&#x5165;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;
  633. * * **interpolation** - &#x6B64;&#x7EC4;&#x4EF6;&#x6A21;&#x677F;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x81EA;&#x5B9A;&#x4E49;&#x63D2;&#x503C;&#x6807;&#x8BB0;
  634. * * **moduleId** - &#x5B9A;&#x4E49;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x6587;&#x4EF6;&#x7684;ES / CommonJS&#x6A21;&#x5757;ID
  635. * * **outputs** - &#x5217;&#x51FA;&#x5176;&#x4ED6;&#x53EF;&#x4EE5;&#x8BA2;&#x9605;&#x7684;&#x8F93;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;
  636. * * **providers** - &#x8BE5;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x5B50;&#x7EC4;&#x4EF6;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  637. * * **queries** - &#x914D;&#x7F6E;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7EC4;&#x4EF6;&#x7684;&#x67E5;&#x8BE2;
  638. * * **selector** - css&#x9009;&#x62E9;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x6B64;&#x7EC4;&#x4EF6;
  639. * * **styleUrls** - &#x8981;&#x5E94;&#x7528;&#x4E8E;&#x6B64;&#x7EC4;&#x4EF6;&#x89C6;&#x56FE;&#x7684;&#x6837;&#x5F0F;&#x8868;&#x7684;URL&#x5217;&#x8868;
  640. * * **styles** - &#x5185;&#x8054;&#x5B9A;&#x4E49;&#x7684;&#x6837;&#x5F0F;&#x5E94;&#x7528;&#x4E8E;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x89C6;&#x56FE;
  641. * * **template** - &#x89C6;&#x56FE;&#x7684;&#x5185;&#x8054;&#x5B9A;&#x4E49;&#x6A21;&#x677F;
  642. * * **templateUrl** - url&#x5230;&#x5305;&#x542B;&#x89C6;&#x56FE;&#x6A21;&#x677F;&#x7684;&#x5916;&#x90E8;&#x6587;&#x4EF6;
  643. * * **viewProviders** - &#x6B64;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x67E5;&#x770B;&#x5B50;&#x9879;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  644. *
  645. * ### &#x4F8B;
  646. *
  647. * {@example core/ts/metadata/metadata.ts region=&apos;component&apos;}
  648. *
  649. * @stable
  650. * @Annotation
  651. */</span>
  652. (obj: Component): TypeDecorator;
  653. <span class="hljs-comment">/**
  654. * &#x8BF7;&#x53C2;&#x9605;{@link Component}&#x88C5;&#x9970;&#x5668;&#x3002;
  655. */</span>
  656. <span class="hljs-keyword">new</span> (obj: Component): Component;
  657. }
  658. <span class="hljs-comment">/**
  659. * &#x7EC4;&#x4EF6;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  660. *
  661. * @stable
  662. */</span>
  663. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Component <span class="hljs-keyword">extends</span> Directive {
  664. <span class="hljs-comment">/**
  665. * &#x5B9A;&#x4E49;&#x4F7F;&#x7528;&#x7684;&#x53D8;&#x66F4;&#x68C0;&#x6D4B;&#x7B56;&#x7565;.
  666. *
  667. * &#x5F53;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x88AB;&#x5B9E;&#x4F8B;&#x5316;&#x65F6;&#xFF0C;Angular&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x53D8;&#x5316;&#x68C0;&#x6D4B;&#x5668;&#xFF0C;
  668. * &#x5B83;&#x8D1F;&#x8D23;&#x4F20;&#x64AD;&#x7EC4;&#x4EF6;&#x7684;&#x7ED1;&#x5B9A;.
  669. *
  670. * `changeDetection`&#x5C5E;&#x6027;&#x5B9A;&#x4E49;&#xFF0C;
  671. * &#x662F;&#x5426;&#x4F1A;&#x6BCF;&#x6B21;&#x68C0;&#x67E5;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#xFF0C;&#x6216;&#x4EC5;&#x5F53;&#x7EC4;&#x4EF6;&#x544A;&#x8BC9;&#x5B83;&#x8FDB;&#x884C;&#x68C0;&#x67E5;&#x65F6;.
  672. */</span>
  673. changeDetection?: ChangeDetectionStrategy;
  674. <span class="hljs-comment">/**
  675. * &#x5B9A;&#x4E49;&#x53EF;&#x89C6;&#x5BF9;&#x8C61;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x4F7F;&#x5176;DOM DOM&#x5B50;&#x9879;&#x7684;&#x89C6;&#x56FE;&#x53EF;&#x89C1;.
  676. *
  677. * ## Simple Example
  678. *
  679. * &#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7684;&#x7C7B;&#x7684;&#x4F8B;&#x5B50;:
  680. *
  681. * `.``
  682. * class Greeter {
  683. * greet(name:string) {
  684. * return &apos;Hello &apos; + name + &apos;!&apos;;
  685. * }
  686. * }
  687. *
  688. * @Directive({
  689. * selector: &apos;needs-greeter&apos;
  690. * })
  691. * class NeedsGreeter {
  692. * greeter:Greeter;
  693. *
  694. * constructor(greeter:Greeter) {
  695. * this.greeter = greeter;
  696. * }
  697. * }
  698. *
  699. * @Component({
  700. * selector: &apos;greet&apos;,
  701. * viewProviders: [
  702. * Greeter
  703. * ],
  704. * template: `&lt;needs-greeter&gt;&lt;/needs-greeter&gt;`
  705. * })
  706. * class HelloWorld {
  707. * }
  708. *
  709. * `.``
  710. */</span>
  711. viewProviders?: Provider[];
  712. <span class="hljs-comment">/**
  713. * &#x5305;&#x542B;&#x7EC4;&#x4EF6;&#x7684;&#x6A21;&#x5757;&#x7684;&#x6A21;&#x5757;ID.
  714. * &#x9700;&#x8981;&#x80FD;&#x591F;&#x89E3;&#x6790;&#x6A21;&#x677F;&#x548C;&#x6837;&#x5F0F;&#x7684;&#x76F8;&#x5BF9;URL.
  715. * &#x5728;CommonJS&#x4E2D;&#xFF0C;&#x8FD9;&#x53EF;&#x4EE5;&#x59CB;&#x7EC8;&#x8BBE;&#x7F6E;&#x4E3A;`module.id`&#xFF0C;&#x540C;&#x6837;&#x7684;SystemJS&#x5728;&#x6BCF;&#x4E2A;&#x6A21;&#x5757;&#x4E2D;&#x90FD;&#x4F1A;&#x663E;&#x793A;`__moduleName`&#x53D8;&#x91CF;.
  716. *
  717. *
  718. * ## &#x7B80;&#x4F8B;
  719. *
  720. * `.``
  721. * @Directive({
  722. * selector: &apos;someDir&apos;,
  723. * moduleId: module.id
  724. * })
  725. * class SomeDir {
  726. * }
  727. *
  728. * `.``
  729. */</span>
  730. moduleId?: <span class="hljs-built_in">string</span>;
  731. <span class="hljs-comment">/**
  732. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x6A21;&#x677F;URL.
  733. *
  734. *&#x6BCF;&#x4E2A;View&#x53EA;&#x80FD;&#x5B9A;&#x4E49;&#x201C;templateUrl&#x201D;&#x6216;&#x201C;template&#x201D;&#x4E4B;&#x4E00;.
  735. */</span>
  736. templateUrl?: <span class="hljs-built_in">string</span>;
  737. <span class="hljs-comment">/**
  738. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x5185;&#x8054;&#x6A21;&#x677F;.
  739. *
  740. * &#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x53EA;&#x80FD;&#x5B9A;&#x4E49;&#x201C;templateUrl&#x201D;&#x6216;&#x201C;template&#x201D;&#x4E4B;&#x4E00;.
  741. */</span>
  742. template?: <span class="hljs-built_in">string</span>;
  743. <span class="hljs-comment">/**
  744. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x6837;&#x5F0F;&#x8868;URL.
  745. */</span>
  746. styleUrls?: <span class="hljs-built_in">string</span>[];
  747. <span class="hljs-comment">/**
  748. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x5185;&#x8054;&#x6837;&#x5F0F;&#x8868;.
  749. */</span>
  750. styles?: <span class="hljs-built_in">string</span>[];
  751. <span class="hljs-comment">/**
  752. * &#x901A;&#x8FC7;&#x7C7B;&#x4F3C;&#x52A8;&#x753B;&#x7684;DSL&#x5728;&#x7EC4;&#x4EF6;&#x4E0A;&#x5B9A;&#x4E49;&#x52A8;&#x753B;&#x3002;
  753. * &#x63CF;&#x8FF0;&#x52A8;&#x753B;&#x7684;&#x8FD9;&#x79CD;DSL&#x65B9;&#x6CD5;&#x5141;&#x8BB8;&#x7075;&#x6D3B;&#x6027;&#xFF0C;
  754. * &#x8FD9;&#x65E2;&#x6709;&#x76CA;&#x4E8E;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x548C;&#x6846;&#x67B6;.
  755. *
  756. * &#x901A;&#x8FC7;&#x4FA6;&#x542C;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x5143;&#x7D20;&#x4E0A;&#x53D1;&#x751F;&#x7684;&#x72B6;&#x6001;&#x66F4;&#x6539;&#x6765;&#x8FDB;&#x884C;&#x52A8;&#x753B;&#x5904;&#x7406;&#x3002;
  757. * &#x5F53;&#x53D1;&#x751F;&#x72B6;&#x6001;&#x53D8;&#x5316;&#x65F6;&#xFF0C;&#x89D2;&#x5EA6;&#x53EF;&#x4EE5;&#x5229;&#x7528;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x7684;&#x5F27;&#x7EBF;&#x5E76;&#x4F7F;&#x5176;&#x52A8;&#x753B;&#x5316;&#x3002;
  758. * &#x8FD9;&#x4E0E;CSS&#x8FC7;&#x6E21;&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;&#x7C7B;&#x4F3C;&#xFF0C;&#x4F46;&#x662F;&#x901A;&#x8FC7;&#x4F7F;&#x7528;&#x7F16;&#x7A0B;&#x5F0F;DSL&#xFF0C;&#x52A8;&#x753B;&#x4E0D;&#x9650;&#x4E8E;DOM&#x7279;&#x5B9A;&#x7684;&#x73AF;&#x5883;.
  759. * (Angular&#x8FD8;&#x53EF;&#x4EE5;&#x5728;&#x5E55;&#x540E;&#x8FDB;&#x884C;&#x4F18;&#x5316;&#xFF0C;&#x4F7F;&#x52A8;&#x753B;&#x66F4;&#x52A0;&#x51FA;&#x8272;.)
  760. *
  761. * &#x4E3A;&#x4E86;&#x4F7F;&#x52A8;&#x753B;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#xFF0C;&#x52A8;&#x753B;&#x72B6;&#x6001;&#x66F4;&#x6539;&#x4F4D;&#x4E8E;{@link&#x89E6;&#x53D1;&#x5668;&#x52A8;&#x753B;&#x89E6;&#x53D1;&#x5668;}&#x4E2D;&#xFF0C;
  762. * &#x5B83;&#x4EEC;&#x4F4D;&#x4E8E;&#x201C;&#x52A8;&#x753B;&#x201D;&#x6CE8;&#x91CA;&#x5143;&#x6570;&#x636E;&#x7684;&#x5185;&#x90E8;&#x3002;
  763. * &#x5728;&#x89E6;&#x53D1;&#x5668;&#x4E2D;&#xFF0C;&#x53EF;&#x4EE5;&#x653E;&#x7F6E;{@link&#x72B6;&#x6001;}&#x548C;{@link&#x8F6C;&#x6362;&#x8F6C;&#x6362;}&#x6761;&#x76EE;.
  764. *
  765. * `.``typescript
  766. * @Component({
  767. * selector: &apos;animation-cmp&apos;,
  768. * templateUrl: &apos;animation-cmp.html&apos;,
  769. * animations: [
  770. * // &#x8FD9;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x52A8;&#x753B;&#x89E6;&#x53D1;&#x5668;&#xFF0C;&#x5B83;&#x5C06;&#x5305;&#x542B;&#x6211;&#x4EEC;&#x7684;&#x72B6;&#x6001;&#x53D8;&#x5316;&#x52A8;&#x753B;.
  771. * trigger(&apos;myTriggerName&apos;, [
  772. * // &#x52A8;&#x753B;&#x5B8C;&#x6210;&#x540E;&#xFF0C;&#x4E3A;&#x5143;&#x7D20;&#x5B9A;&#x4E49;&#x7684;&#x201C;on&#x201D;&#x548C;&#x201C;off&#x201D;&#x72B6;&#x6001;&#x7684;&#x6837;&#x5F0F;&#x5C06;&#x4FDD;&#x7559;&#x5728;&#x5143;&#x7D20;&#x4E0A;.
  773. * state(&apos;on&apos;, style({ opacity: 1 }),
  774. * state(&apos;off&apos;, style({ opacity: 0 }),
  775. *
  776. * // &#x8FD9;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x52A8;&#x753B;&#xFF0C;&#x5F53;&#x8FD9;&#x4E2A;&#x72B6;&#x6001;&#x53D8;&#x5316;&#x8DF3;&#x8DC3;&#x662F;&#x771F;&#x7684;&#x65F6;&#xFF0C;&#x5B83;&#x5F00;&#x59CB;&#x4E86;
  777. * transition(&apos;on =&gt; off&apos;, [
  778. * animate(&quot;1s&quot;)
  779. * ])
  780. * ])
  781. * ]
  782. * })
  783. * `.``
  784. *
  785. * &#x5982;&#x4E0A;&#x9762;&#x7684;&#x4EE3;&#x7801;&#x6240;&#x793A;&#xFF0C;
  786. * &#x4E00;&#x7EC4;&#x76F8;&#x5173;&#x7684;&#x52A8;&#x753B;&#x72B6;&#x6001;&#x90FD;&#x5305;&#x542B;&#x5728;&#x52A8;&#x753B;&#x201C;&#x89E6;&#x53D1;&#x5668;&#x201D;&#xFF08;&#x4E0A;&#x9762;&#x7684;&#x4EE3;&#x7801;&#x793A;&#x4F8B;&#x79F0;&#x4E3A;&#x89E6;&#x53D1;&#x5668;iggerName&#xFF09;&#x4E2D;&#xFF09;&#x3002;
  787. * &#x5F53;&#x89E6;&#x53D1;&#x5668;&#x88AB;&#x521B;&#x5EFA;&#x65F6;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x7ED1;&#x5B9A;&#x5230;&#x7EC4;&#x4EF6;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#x4E0A;&#xFF0C;
  788. * &#x524D;&#x7F00;&#x662F;&#x4E00;&#x4E2A;&#x524D;&#x7F00;&#x4E3A;&#x201C;@&#x201D;&#x7B26;&#x53F7;&#x7684;&#x5C5E;&#x6027;&#xFF0C;&#x540E;&#x8DDF;&#x89E6;&#x53D1;&#x5668;&#x540D;&#x79F0;&#x548C;&#x7528;&#x4E8E;&#x786E;&#x5B9A;&#x8BE5;&#x89E6;&#x53D1;&#x5668;&#x7684;&#x72B6;&#x6001;&#x503C;&#x7684;&#x8868;&#x8FBE;&#x5F0F;.
  789. *
  790. * `.``html
  791. * &lt;!-- animation-cmp.html --&gt;
  792. * &lt;div @myTriggerName=&quot;expression&quot;&gt;...&lt;/div&gt;
  793. * `.``
  794. *
  795. * &#x5BF9;&#x4E8E;&#x8981;&#x6267;&#x884C;&#x7684;&#x72B6;&#x6001;&#x66F4;&#x6539;&#xFF0C;&#x201C;expression&#x201D;&#x503C;&#x5FC5;&#x987B;&#x5C06;&#x503C;&#x4ECE;&#x73B0;&#x6709;&#x503C;&#x66F4;&#x6539;&#x4E3A;&#x6211;&#x4EEC;&#x5C06;&#x52A8;&#x753B;&#x8BBE;&#x7F6E;&#x4E3A;&#x52A8;&#x753B;
  796. * &#xFF08;&#x5728;&#x4E0A;&#x9762;&#x7684;&#x793A;&#x4F8B;&#x4E2D;&#xFF0C;&#x6211;&#x4EEC;&#x6B63;&#x5728;&#x76D1;&#x542C;&#x201C;on&#x201D;&#x548C;&#x201C;off&#x201D;&#x4E4B;&#x95F4;&#x7684;&#x72B6;&#x6001;&#x66F4;&#x6539;`&#xFF09;&#x3002;
  797. * &#x9644;&#x52A0;&#x5230;&#x89E6;&#x53D1;&#x5668;&#x7684;&#x201C;expression&#x201D;&#x503C;&#x5FC5;&#x987B;&#x662F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x6A21;&#x677F;/&#x7EC4;&#x4EF6;&#x4E0A;&#x4E0B;&#x6587;&#x6765;&#x8BC4;&#x4F30;&#x7684;&#x503C;.
  798. *
  799. * ### DSL&#x52A8;&#x753B;&#x529F;&#x80FD;
  800. *
  801. * &#x8BF7;&#x8BBF;&#x95EE;&#x4E0B;&#x9762;&#x5217;&#x51FA;&#x7684;&#x6BCF;&#x4E2A;&#x52A8;&#x753B;DSL&#x529F;&#x80FD;&#xFF0C;&#x4EE5;&#x66F4;&#x597D;&#x5730;&#x4E86;&#x89E3;&#x5982;&#x4F55;&#x4EE5;&#x53CA;&#x4E3A;&#x4EC0;&#x4E48;&#x7528;&#x4E8E;&#x5728;Angular&#x4E2D;&#x5236;&#x4F5C;&#x52A8;&#x753B;:
  802. *
  803. * - {@link trigger trigger()}
  804. * - {@link state state()}
  805. * - {@link transition transition()}
  806. * - {@link group group()}
  807. * - {@link sequence sequence()}
  808. * - {@link style style()}
  809. * - {@link animate animate()}
  810. * - {@link keyframes keyframes()}
  811. */</span>
  812. animations?: <span class="hljs-built_in">any</span>[];
  813. <span class="hljs-comment">/**
  814. * &#x6307;&#x5B9A;&#x6A21;&#x677F;&#x548C;&#x6837;&#x5F0F;&#x5E94;&#x5982;&#x4F55;&#x5C01;&#x88C5;:
  815. * - {@link ViewEncapsulation#Native `ViewEncapsulation.Native`} to use shadow roots - &#x4EC5;&#x5728;&#x5E73;&#x53F0;&#x4E0A;&#x53EF;&#x7528;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x624D;&#x8D77;&#x4F5C;&#x7528;,
  816. * - {@link ViewEncapsulation#Emulated `ViewEncapsulation.Emulated`} &#x4F7F;&#x7528;&#x6A21;&#x4EFF;&#x672C;&#x673A;&#x884C;&#x4E3A;&#x7684;shimmed CSS,
  817. * - {@link ViewEncapsulation#None `ViewEncapsulation.None`} &#x4F7F;&#x7528;&#x5168;&#x5C40;CSS&#x800C;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x5C01;&#x88C5;.
  818. *
  819. * &#x5F53;&#x6CA1;&#x6709;&#x4E3A;&#x7EC4;&#x4EF6;&#x5B9A;&#x4E49;&#x201C;&#x5C01;&#x88C5;&#x201D;&#x65F6;&#xFF0C;&#x5C06;&#x4F7F;&#x7528;{@link CompilerOptions}&#x4E2D;&#x7684;&#x9ED8;&#x8BA4;&#x503C;&#x3002; &#x9ED8;&#x8BA4;&#x4E3A;&#x201C;ViewEncapsulation.Emulated&#x201D;}&#x3002; &#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x65B0;&#x7684;`CompilerOptions`&#x6765;&#x8986;&#x76D6;&#x8FD9;&#x4E2A;&#x503C;.
  820. *
  821. * &#x5982;&#x679C;&#x5C01;&#x88C5;&#x8BBE;&#x7F6E;&#x4E3A;&#x201C;ViewEncapsulation.Emulated&#x201D;&#xFF0C;&#x5E76;&#x4E14;&#x7EC4;&#x4EF6;&#x6CA1;&#x6709;&#x201C;&#x6837;&#x5F0F;&#x201D;&#x548C;&#x201C;styleUrls&#x201D;&#xFF0C;&#x5C01;&#x88C5;&#x5C06;&#x81EA;&#x52A8;&#x5207;&#x6362;&#x5230;&#x201C;ViewEncapsulation.None&#x201D;.
  822. */</span>
  823. encapsulation?: ViewEncapsulation;
  824. <span class="hljs-comment">/**
  825. * &#x8986;&#x76D6;&#x9ED8;&#x8BA4;&#x7684;&#x5C01;&#x88C5;&#x5F00;&#x59CB;&#x548C;&#x7ED3;&#x675F;&#x5206;&#x9694;&#x7B26;&#xFF08;&#x5206;&#x522B;&#x4E3A;{{`&#x548C;`}}`&#xFF09;
  826. */</span>
  827. interpolation?: [<span class="hljs-built_in">string</span>, <span class="hljs-built_in">string</span>];
  828. <span class="hljs-comment">/**
  829. * &#x5B9A;&#x4E49;&#x6B64;&#x7EC4;&#x4EF6;&#x65F6;&#xFF0C;&#x8FD8;&#x8981;&#x5B9A;&#x4E49;&#x5E94;&#x7F16;&#x8BD1;&#x7684;&#x7EC4;&#x4EF6;&#x3002; &#x5BF9;&#x4E8E;&#x6B64;&#x5904;&#x5217;&#x51FA;&#x7684;&#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#xFF0C;Angular&#x5C06;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;{@link ComponentFactory}&#x5E76;&#x5C06;&#x5176;&#x5B58;&#x50A8;&#x5728;{@link ComponentFactoryResolver}.
  830. */</span>
  831. entryComponents?: <span class="hljs-built_in">Array</span>&lt;Type&lt;<span class="hljs-built_in">any</span>&gt; | <span class="hljs-built_in">any</span>[]&gt;;
  832. }
  833. <span class="hljs-comment">/**
  834. * &#x7EC4;&#x4EF6;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  835. *
  836. * @stable
  837. * @Annotation
  838. */</span>
  839. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Component: ComponentDecorator;
  840. <span class="hljs-comment">/**
  841. * &#x7BA1;&#x9053;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  842. *
  843. * @stable
  844. */</span>
  845. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> PipeDecorator {
  846. <span class="hljs-comment">/**
  847. * &#x58F0;&#x660E;&#x53EF;&#x91CD;&#x590D;&#x4F7F;&#x7528;&#x7684;&#x7BA1;&#x9053;&#x529F;&#x80FD;.
  848. *
  849. * &#x53EA;&#x6709;&#x5F53;&#x8F93;&#x5165;&#x6216;&#x4EFB;&#x4F55;&#x53C2;&#x6570;&#x53D1;&#x751F;&#x53D8;&#x5316;&#x65F6;&#xFF0C;&#x624D;&#x4F1A;&#x91CD;&#x65B0;&#x8BC4;&#x4F30;&#x201C;&#x7EAF;&#x201D;&#x7BA1;&#x9053;.
  850. *
  851. * &#x5F53;&#x672A;&#x6307;&#x5B9A;&#x65F6;&#xFF0C;&#x7BA1;&#x9053;&#x9ED8;&#x8BA4;&#x4E3A;&#x7EAF;.
  852. */</span>
  853. (obj: Pipe): TypeDecorator;
  854. <span class="hljs-comment">/**
  855. * &#x8BF7;&#x53C2;&#x9605;{@link Pipe}&#x88C5;&#x9970;&#x5668;.
  856. */</span>
  857. <span class="hljs-keyword">new</span> (obj: Pipe): Pipe;
  858. }
  859. <span class="hljs-comment">/**
  860. * &#x7BA1;&#x9053;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  861. *
  862. * @stable
  863. */</span>
  864. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Pipe {
  865. name: <span class="hljs-built_in">string</span>;
  866. pure?: <span class="hljs-built_in">boolean</span>;
  867. }
  868. <span class="hljs-comment">/**
  869. * &#x7BA1;&#x9053;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  870. *
  871. * @stable
  872. * @Annotation
  873. */</span>
  874. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Pipe: PipeDecorator;
  875. <span class="hljs-comment">/**
  876. * &#x8F93;&#x5165;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  877. *
  878. * @stable
  879. */</span>
  880. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> InputDecorator {
  881. <span class="hljs-comment">/**
  882. * &#x58F0;&#x660E;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x8F93;&#x5165;&#x5C5E;&#x6027;.
  883. *
  884. * Angular.
  885. *
  886. * `Input`&#x63A5;&#x53D7;&#x4E00;&#x4E2A;&#x53EF;&#x9009;&#x53C2;&#x6570;&#xFF0C;&#x6307;&#x5B9A;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x7EC4;&#x4EF6;&#x65F6;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;&#x3002; &#x672A;&#x63D0;&#x4F9B;&#x65F6;&#xFF0C;&#x5C06;&#x4F7F;&#x7528;&#x88C5;&#x9970;&#x5C5E;&#x6027;&#x7684;&#x540D;&#x79F0;.
  887. *
  888. * ### Example
  889. *
  890. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x5177;&#x6709;&#x4E24;&#x4E2A;&#x8F93;&#x5165;&#x5C5E;&#x6027;&#x7684;&#x7EC4;&#x4EF6;.
  891. *
  892. * `.``typescript
  893. * @Component({
  894. * selector: &apos;bank-account&apos;,
  895. * template: `
  896. * Bank Name: {{bankName}}
  897. * Account Id: {{id}}
  898. * `
  899. * })
  900. * class BankAccount {
  901. * @Input() bankName: string;
  902. * @Input(&apos;account-id&apos;) id: string;
  903. *
  904. * // &#x6B64;&#x5C5E;&#x6027;&#x672A;&#x7ED1;&#x5B9A;&#xFF0C;&#x4E0D;&#x4F1A;&#x88AB;Angular&#x81EA;&#x52A8;&#x66F4;&#x65B0;
  905. * normalizedBankName: string;
  906. * }
  907. *
  908. * @Component({
  909. * selector: &apos;app&apos;,
  910. * template: `
  911. * &lt;bank-account bank-name=&quot;RBC&quot; account-id=&quot;4747&quot;&gt;&lt;/bank-account&gt;
  912. * `
  913. * })
  914. *
  915. * class App {}
  916. * `.``
  917. * @stable
  918. */</span>
  919. (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  920. <span class="hljs-keyword">new</span> (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  921. }
  922. <span class="hljs-comment">/**
  923. * &#x8F93;&#x5165;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  924. *
  925. * @stable
  926. */</span>
  927. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Input {
  928. <span class="hljs-comment">/**
  929. * &#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x7EC4;&#x4EF6;&#x65F6;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;.
  930. */</span>
  931. bindingPropertyName?: <span class="hljs-built_in">string</span>;
  932. }
  933. <span class="hljs-comment">/**
  934. * &#x8F93;&#x5165;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  935. *
  936. * @stable
  937. * @Annotation
  938. */</span>
  939. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Input: InputDecorator;
  940. <span class="hljs-comment">/**
  941. * &#x8F93;&#x51FA;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  942. *
  943. * @stable
  944. */</span>
  945. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> OutputDecorator {
  946. <span class="hljs-comment">/**
  947. * &#x58F0;&#x660E;&#x4E00;&#x4E2A;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x7684;&#x8F93;&#x51FA;&#x5C5E;&#x6027;.
  948. *
  949. * &#x5F53;&#x8F93;&#x51FA;&#x5C5E;&#x6027;&#x53D1;&#x51FA;&#x4E00;&#x4E2A;&#x4E8B;&#x4EF6;&#x65F6;&#xFF0C;&#x9644;&#x52A0;&#x5230;&#x8BE5;&#x4E8B;&#x4EF6;&#x7684;&#x4E8B;&#x4EF6;&#x5904;&#x7406;&#x7A0B;&#x5E8F;&#x8C03;&#x7528;&#x8BE5;&#x6A21;&#x677F;.
  950. *
  951. * `Output`&#x91C7;&#x7528;&#x4E00;&#x4E2A;&#x53EF;&#x9009;&#x53C2;&#x6570;&#xFF0C;&#x6307;&#x5B9A;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x7EC4;&#x4EF6;&#x65F6;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;&#x3002;
  952. * &#x672A;&#x63D0;&#x4F9B;&#x65F6;&#xFF0C;&#x5C06;&#x4F7F;&#x7528;&#x88C5;&#x9970;&#x5C5E;&#x6027;&#x7684;&#x540D;&#x79F0;.
  953. *
  954. * ### &#x4F8B;
  955. *
  956. * `.``typescript
  957. * @Directive({
  958. * selector: &apos;interval-dir&apos;,
  959. * })
  960. * class IntervalDir {
  961. * @Output() everySecond = new EventEmitter();
  962. * @Output(&apos;everyFiveSeconds&apos;) five5Secs = new EventEmitter();
  963. *
  964. * constructor() {
  965. * setInterval(() =&gt; this.everySecond.emit(&quot;event&quot;), 1000);
  966. * setInterval(() =&gt; this.five5Secs.emit(&quot;event&quot;), 5000);
  967. * }
  968. * }
  969. *
  970. * @Component({
  971. * selector: &apos;app&apos;,
  972. * template: `
  973. * &lt;interval-dir (everySecond)=&quot;everySecond()&quot; (everyFiveSeconds)=&quot;everyFiveSeconds()&quot;&gt;
  974. * &lt;/interval-dir&gt;
  975. * `
  976. * })
  977. * class App {
  978. * everySecond() { console.log(&apos;second&apos;); }
  979. * everyFiveSeconds() { console.log(&apos;five seconds&apos;); }
  980. * }
  981. * `.``
  982. * @stable
  983. */</span>
  984. (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  985. <span class="hljs-keyword">new</span> (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  986. }
  987. <span class="hljs-comment">/**
  988. * &#x8F93;&#x51FA;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  989. *
  990. * @stable
  991. */</span>
  992. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Output {
  993. bindingPropertyName?: <span class="hljs-built_in">string</span>;
  994. }
  995. <span class="hljs-comment">/**
  996. * &#x8F93;&#x51FA;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  997. *
  998. * @stable
  999. * @Annotation
  1000. */</span>
  1001. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Output: OutputDecorator;
  1002. <span class="hljs-comment">/**
  1003. * HostBinding&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  1004. *
  1005. * @stable
  1006. */</span>
  1007. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostBindingDecorator {
  1008. <span class="hljs-comment">/**
  1009. * &#x58F0;&#x660E;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  1010. *
  1011. * &#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#xFF0C;Angular&#x4F1A;&#x81EA;&#x52A8;&#x68C0;&#x67E5;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  1012. * &#x5982;&#x679C;&#x7ED1;&#x5B9A;&#x66F4;&#x6539;&#xFF0C;&#x5B83;&#x5C06;&#x66F4;&#x65B0;&#x6307;&#x4EE4;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;.
  1013. *
  1014. * `HostBinding`&#x63A5;&#x53D7;&#x4E00;&#x4E2A;&#x53EF;&#x9009;&#x53C2;&#x6570;&#xFF0C;
  1015. * &#x6307;&#x5B9A;&#x8981;&#x66F4;&#x65B0;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7684;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x3002;
  1016. * &#x672A;&#x63D0;&#x4F9B;&#x65F6;&#xFF0C;&#x4F7F;&#x7528;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;.
  1017. *
  1018. * ### &#x4F8B;
  1019. *
  1020. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x4E86;&#x4E00;&#x4E2A;&#x5728;DOM&#x5143;&#x7D20;&#x4E0A;&#x8BBE;&#x7F6E;&#x201C;valid&#x201D;&#x548C;&#x201C;invalid&#x201D;&#x7C7B;&#x7684;&#x6307;&#x4EE4;&#xFF0C;&#x8BE5;&#x5143;&#x7D20;&#x5177;&#x6709;ngModel&#x4F2A;&#x6307;&#x4EE4;.
  1021. *
  1022. * `.``typescript
  1023. * @Directive({selector: &apos;[ngModel]&apos;})
  1024. * class NgModelStatus {
  1025. * constructor(public control:NgModel) {}
  1026. * @HostBinding(&apos;class.valid&apos;) get valid() { return this.control.valid; }
  1027. * @HostBinding(&apos;class.invalid&apos;) get invalid() { return this.control.invalid; }
  1028. * }
  1029. *
  1030. * @Component({
  1031. * selector: &apos;app&apos;,
  1032. * template: `&lt;input [(ngModel)]=&quot;prop&quot;&gt;`,
  1033. * })
  1034. * class App {
  1035. * prop;
  1036. * }
  1037. * `.``
  1038. * @stable
  1039. */</span>
  1040. (hostPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1041. <span class="hljs-keyword">new</span> (hostPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1042. }
  1043. <span class="hljs-comment">/**
  1044. * HostBinding&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  1045. *
  1046. * @stable
  1047. */</span>
  1048. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostBinding {
  1049. hostPropertyName?: <span class="hljs-built_in">string</span>;
  1050. }
  1051. <span class="hljs-comment">/**
  1052. * HostBinding&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  1053. *
  1054. * @stable
  1055. * @Annotation
  1056. */</span>
  1057. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> HostBinding: HostBindingDecorator;
  1058. <span class="hljs-comment">/**
  1059. * HostListener&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  1060. *
  1061. * @stable
  1062. */</span>
  1063. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostListenerDecorator {
  1064. <span class="hljs-comment">/**
  1065. * &#x58F0;&#x660E;&#x4E3B;&#x673A;&#x4FA6;&#x542C;&#x5668;.
  1066. *
  1067. * &#x5F53;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x53D1;&#x51FA;&#x6307;&#x5B9A;&#x7684;&#x4E8B;&#x4EF6;&#x65F6;&#xFF0C;Angular&#x5C06;&#x8C03;&#x7528;&#x88C5;&#x9970;&#x7684;&#x65B9;&#x6CD5;.
  1068. *
  1069. * &#x5982;&#x679C;&#x88C5;&#x9970;&#x65B9;&#x6CD5;&#x8FD4;&#x56DE;`false`&#xFF0C;&#x90A3;&#x4E48;`preventDefault`&#x5E94;&#x7528;&#x4E8E;DOM&#x4E8B;&#x4EF6;.
  1070. *
  1071. * ### Example
  1072. *
  1073. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x58F0;&#x660E;&#x5C06;&#x70B9;&#x51FB;&#x76D1;&#x542C;&#x5668;&#x9644;&#x52A0;&#x5230;&#x6309;&#x94AE;&#x5E76;&#x8BA1;&#x6570;&#x70B9;&#x51FB;&#x7684;&#x6307;&#x4EE4;.
  1074. *
  1075. * `.``typescript
  1076. * @Directive({selector: &apos;button[counting]&apos;})
  1077. * class CountClicks {
  1078. * numberOfClicks = 0;
  1079. *
  1080. * @HostListener(&apos;click&apos;, [&apos;$event.target&apos;])
  1081. * onClick(btn) {
  1082. * console.log(&apos;button&apos;, btn, &apos;number of clicks:&apos;, this.numberOfClicks++);
  1083. * }
  1084. * }
  1085. *
  1086. * @Component({
  1087. * selector: &apos;app&apos;,
  1088. * template: &apos;&lt;button counting&gt;Increment&lt;/button&gt;&apos;,
  1089. * })
  1090. * class App {}
  1091. * `.``
  1092. * @stable
  1093. * @Annotation
  1094. */</span>
  1095. (eventName: <span class="hljs-built_in">string</span>, args?: <span class="hljs-built_in">string</span>[]): <span class="hljs-built_in">any</span>;
  1096. <span class="hljs-keyword">new</span> (eventName: <span class="hljs-built_in">string</span>, args?: <span class="hljs-built_in">string</span>[]): <span class="hljs-built_in">any</span>;
  1097. }
  1098. <span class="hljs-comment">/**
  1099. * HostListener&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  1100. *
  1101. * @stable
  1102. */</span>
  1103. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostListener {
  1104. eventName?: <span class="hljs-built_in">string</span>;
  1105. args?: <span class="hljs-built_in">string</span>[];
  1106. }
  1107. <span class="hljs-comment">/**
  1108. * HostListener&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  1109. *
  1110. * @stable
  1111. * @Annotation
  1112. */</span>
  1113. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> HostListener: HostListenerDecorator;
  1114. </code></pre>
  1115. </div>
  1116. <hr>
  1117. <div class="btn-group btn-group-justified">
  1118. <a class="btn" href="01_formControl.html"><b>上一页:</b> formControl</a>
  1119. <a class="btn" href="03_ng_model.html"><b>下一页:</b> ngModel</a>
  1120. </div>
  1121. </div>
  1122. <div class="search-results">
  1123. <div class="has-results">
  1124. <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
  1125. <ul class="search-results-list"></ul>
  1126. </div>
  1127. <div class="no-results">
  1128. <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
  1129. </div>
  1130. </div>
  1131. </div>
  1132. </div>
  1133. </div>
  1134. </div>
  1135. </div>
  1136. </div>
  1137. <footer class="gb-page-footer">
  1138. <div class="container">
  1139. <ul class="menu">
  1140. <li class="pull-right">
  1141. <span class="service-info">Copyright GitBook 2018</span>
  1142. </li>
  1143. <li>
  1144. <a href="#">Return to the top</a>
  1145. </li>
  1146. <li>
  1147. <a href="#">Updated May 30th 18</a>
  1148. </li>
  1149. </ul>
  1150. </div>
  1151. </footer>
  1152. </div>
  1153. <script src="../../../gitbook/gitbook.js"></script>
  1154. <script src="../../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
  1155. <script src="../../../gitbook/gitbook-plugin-search-pro/search.js"></script>
  1156. <script src="../../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
  1157. <script src="../../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
  1158. <script>
  1159. (function() {
  1160. gitbook.page.hasChanged({"page":{"title":"directives_源码解析","level":"3.1.3.3","depth":3,"next":{"title":"ngModel","level":"3.1.3.4","depth":3,"path":"angular/study_notes/from/03_ng_model.md","ref":"angular/study_notes/from/03_ng_model.md","articles":[]},"previous":{"title":"formControl","level":"3.1.3.2","depth":3,"path":"angular/study_notes/from/01_formControl.md","ref":"angular/study_notes/from/01_formControl.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-official@2.1.1","-sharing","-fontsettings","sitemap","-search","search-pro"],"root":"./docs/","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"sitemap":{"hostname":"https://blog.honghaitao.net/"},"search-pro":{"cutWordLib":"nodejieba","defineWord":["小需求","基础建设"]},"highlight":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"theme-official":{},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"version":"0.0.1"},"title":"代码收集","gitbook":"3.1.1"},"file":{"path":"angular/study_notes/from/02_directives.md","mtime":"2018-05-30T08:23:34.368Z","type":"markdown"},"gitbook":{"version":"3.1.1","time":"2018-05-30T08:55:08.693Z"},"basePath":"../../..","book":{"language":""}});
  1161. })();
  1162. </script>
  1163. </body>
  1164. </html>