02_directives.html 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770
  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. <a href="../../../ubuntu/software/" class="list-group-item ">
  181. 常用软件安装
  182. </a>
  183. </div>
  184. </div>
  185. <div class="panel panel-default">
  186. <div class="panel-heading">
  187. <h3 class="panel-title">GIT</h3>
  188. </div>
  189. <div class="list-group">
  190. <a href="../../../git/git.html" class="list-group-item ">
  191. git 命令
  192. </a>
  193. <a href="../../../git/push.html" class="list-group-item ">
  194. git~push
  195. </a>
  196. <a href="../../../git/faq.html" class="list-group-item ">
  197. git~F.A.Q
  198. </a>
  199. </div>
  200. </div>
  201. <div class="panel panel-default">
  202. <div class="panel-heading">
  203. <h3 class="panel-title">NODE&NPM</h3>
  204. </div>
  205. <div class="list-group">
  206. <a href="../../../node/0.html" class="list-group-item ">
  207. <i class="octicon octicon-chevron-right"></i>
  208. node
  209. </a>
  210. <a href="../../../node/npm/0.html" class="list-group-item ">
  211. npm
  212. </a>
  213. </div>
  214. </div>
  215. <div class="panel panel-default">
  216. <div class="list-group">
  217. <a href="../../../other/faq.html" class="list-group-item ">
  218. FAQ
  219. </a>
  220. <a href="../../../other/examples.html" class="list-group-item ">
  221. Examples
  222. </a>
  223. </div>
  224. </div>
  225. </div>
  226. <div class="col-md-9">
  227. <div id="book-search-results">
  228. <div class="search-noresults">
  229. <div class="gb-markdown book-page-inner">
  230. <pre><code class="lang-typescript"><span class="hljs-comment">/**
  231. * @license
  232. * Copyright Google Inc. All Rights Reserved.
  233. *
  234. * Use of this source code is governed by an MIT-style license that can be
  235. * found in the LICENSE file at https://angular.io/license
  236. */</span>
  237. <span class="hljs-keyword">import</span> { ChangeDetectionStrategy } from <span class="hljs-string">&apos;../change_detection/constants&apos;</span>;
  238. <span class="hljs-keyword">import</span> { Provider } from <span class="hljs-string">&apos;../di&apos;</span>;
  239. <span class="hljs-keyword">import</span> { Type } from <span class="hljs-string">&apos;../type&apos;</span>;
  240. <span class="hljs-keyword">import</span> { TypeDecorator } from <span class="hljs-string">&apos;../util/decorators&apos;</span>;
  241. <span class="hljs-keyword">import</span> { ViewEncapsulation } from <span class="hljs-string">&apos;./view&apos;</span>;
  242. <span class="hljs-comment">/**
  243. * &#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x3002;
  244. *
  245. * @stable
  246. */</span>
  247. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> DirectiveDecorator {
  248. <span class="hljs-comment">/**
  249. * @&#x5B83;&#x80FD;&#x505A;&#x4EC0;&#x4E48; &#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;Angular&#x6307;&#x4EE4;&#xFF0C;&#x5E76;&#x6536;&#x96C6;&#x6307;&#x4EE4;&#x914D;&#x7F6E;
  250. * &#x5143;&#x6570;&#x636E;.
  251. *
  252. * @&#x5982;&#x4F55;&#x4F7F;&#x7528;
  253. *
  254. * `.``
  255. * import {Directive} from &apos;@angular/core&apos;;
  256. *
  257. * @Directive({
  258. * selector: &apos;my-directive&apos;,
  259. * })
  260. * export class MyDirective {
  261. * }
  262. * `.``
  263. *
  264. * @&#x63CF;&#x8FF0;
  265. *
  266. * &#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;
  267. * &#x4EE5;&#x786E;&#x5B9A;&#x5982;&#x4F55;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x5904;&#x7406;&#xFF0C;&#x5B9E;&#x4F8B;&#x5316;&#x548C;&#x4F7F;&#x7528;&#x4F2A;&#x6307;&#x4EE4;&#x3002;
  268. *
  269. * &#x6307;&#x4EE4;&#x5141;&#x8BB8;&#x60A8;&#x5C06;&#x884C;&#x4E3A;&#x9644;&#x52A0;&#x5230;DOM&#x4E2D;&#x7684;&#x5143;&#x7D20;
  270. *
  271. * &#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x5FC5;&#x987B;&#x5C5E;&#x4E8E;&#x4E00;&#x4E2A;NgModule&#xFF0C;
  272. * &#x4EE5;&#x4FBF;&#x5B83;&#x88AB;&#x53E6;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#xFF0C;&#x7EC4;&#x4EF6;&#x6216;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#x3002;
  273. * &#x8981;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x662F;NgModule&#x7684;&#x6210;&#x5458;&#xFF0C;
  274. * &#x60A8;&#x5E94;&#x8BE5;&#x5C06;&#x5176;&#x5217;&#x5728;&#x8BE5;NgModule&#x7684;&#x201C;&#x58F0;&#x660E;&#x201D;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;
  275. *
  276. * &#x9664;&#x4E86;&#x901A;&#x8FC7;&#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;&#x6307;&#x5B9A;&#x7684;&#x5143;&#x6570;&#x636E;&#x914D;&#x7F6E;&#x4E4B;&#x5916;,
  277. * &#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;.
  278. *
  279. * **&#x5143;&#x6570;&#x636E;&#x5C5E;&#x6027;:**
  280. *
  281. * * **exportAs** - &#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5BFC;&#x51FA;&#x7684;&#x540D;&#x79F0;
  282. * * **host** - &#x7C7B;&#x5C5E;&#x6027;&#x6620;&#x5C04;&#x5230;&#x4E8B;&#x4EF6;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7ED1;&#x5B9A;
  283. * * **inputs** - &#x5C06;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x5217;&#x8868;&#x4F5C;&#x4E3A;&#x7EC4;&#x4EF6;&#x8F93;&#x5165;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;
  284. * * **outputs** - &#x5217;&#x51FA;&#x5176;&#x4ED6;&#x53EF;&#x4EE5;&#x8BA2;&#x9605;&#x7684;&#x8F93;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;
  285. * * **providers** - &#x8BE5;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x5B50;&#x7EC4;&#x4EF6;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  286. * * **queries** - &#x914D;&#x7F6E;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7EC4;&#x4EF6;&#x7684;&#x67E5;&#x8BE2;
  287. * * **selector** - css&#x9009;&#x62E9;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x6B64;&#x7EC4;&#x4EF6;
  288. *
  289. * @&#x7A33;&#x5B9A;
  290. * @&#x6CE8;&#x89E3;
  291. */</span>
  292. (obj: Directive): TypeDecorator;
  293. <span class="hljs-comment">/**
  294. * &#x8BF7;&#x53C2;&#x9605;{@link&#x6307;&#x4EE4;}&#x88C5;&#x9970;&#x5668;&#x3002;
  295. */</span>
  296. <span class="hljs-keyword">new</span> (obj: Directive): Directive;
  297. }
  298. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Directive {
  299. <span class="hljs-comment">/**
  300. * &#x89E6;&#x53D1;&#x5B9E;&#x4F8B;&#x5316;&#x6307;&#x4EE4;&#x7684;CSS&#x9009;&#x62E9;&#x5668;&#x3002;
  301. *
  302. * Angular&#x4EC5;&#x5141;&#x8BB8;&#x6307;&#x4EE4;&#x89E6;&#x53D1;&#x4E0D;&#x8DE8;&#x8D8A;&#x5143;&#x7D20;&#x8FB9;&#x754C;&#x7684;CSS&#x9009;&#x62E9;&#x5668;&#x3002;
  303. *
  304. * `selector` &#x53EF;&#x4EE5;&#x88AB;&#x58F0;&#x660E;&#x4E3A;&#x4EE5;&#x4E0B;&#x4E4B;&#x4E00;:
  305. *
  306. * - `element-name`: &#x6309;&#x5143;&#x7D20;&#x540D;&#x79F0;&#x9009;&#x62E9;.
  307. * - `.class`: &#x6309;&#x7C7B;&#x540D;&#x9009;&#x62E9;.
  308. * - `[attribute]`: &#x6309;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x9009;&#x62E9;.
  309. * - `[attribute=value]`: &#x6309;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x548C;&#x503C;&#x9009;&#x62E9;.
  310. * - `:not(sub_selector)`: &#x53EA;&#x6709;&#x5F53;&#x5143;&#x7D20;&#x4E0D;&#x5339;&#x914D;`sub_selector`&#x65F6;&#x624D;&#x9009;&#x62E9;.
  311. * - `selector1, selector2`: &#x9009;&#x62E9;&#x201C;selector1&#x201D;&#x6216;&#x201C;selector2&#x201D;&#x662F;&#x5426;&#x5339;&#x914D;.
  312. *
  313. *
  314. * ### &#x4F8B;
  315. *
  316. * &#x5047;&#x8BBE;&#x6211;&#x4EEC;&#x6709;&#x4E00;&#x4E2A;`input [type = text]&#x9009;&#x62E9;&#x5668;&#x7684;&#x6307;&#x4EE4;&#x3002;
  317. *
  318. * &#x548C;&#x4EE5;&#x4E0B;HTML:
  319. *
  320. * `.``html
  321. * &lt;form&gt;
  322. * &lt;input type=&quot;text&quot;&gt;
  323. * &lt;input type=&quot;radio&quot;&gt;
  324. * &lt;form&gt;
  325. * `.``
  326. *
  327. * &#x8BE5;&#x6307;&#x4EE4;&#x53EA;&#x80FD;&#x5728;`&lt;input type =&#x201C;text&#x201D;&gt;&#x201C;&#x5143;&#x7D20;&#x4E0A;&#x5B9E;&#x4F8B;&#x5316;.
  328. *
  329. */</span>
  330. selector?: <span class="hljs-built_in">string</span>;
  331. <span class="hljs-comment">/**
  332. * &#x679A;&#x4E3E;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x8F93;&#x5165;&#x5C5E;&#x6027;&#x96C6;
  333. *
  334. * Angular&#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#x81EA;&#x52A8;&#x66F4;&#x65B0;&#x8F93;&#x5165;&#x5C5E;&#x6027;.
  335. *
  336. * `inputs`&#x5C5E;&#x6027;&#x5C06;&#x4E00;&#x7EC4;`directiveProperty`&#x5B9A;&#x4E49;&#x4E3A;`bindingProperty`
  337. &#x7EC4;&#x6001;:
  338. *
  339. * - `directiveProperty`&#x6307;&#x5B9A;&#x5199;&#x5165;&#x503C;&#x7684;&#x7EC4;&#x4EF6;&#x5C5E;&#x6027;.
  340. * - `bindingProperty`&#x6307;&#x5B9A;&#x8BFB;&#x53D6;&#x503C;&#x7684;DOM&#x5C5E;&#x6027;.
  341. *
  342. * &#x5F53;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;`bindingProperty`&#x65F6;&#xFF0C;&#x5B83;&#x88AB;&#x5047;&#x5B9A;&#x4E3A;&#x7B49;&#x4E8E;`directiveProperty`.
  343. *
  344. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/ivhfXY?p=preview&#xFF09;&#xFF09;
  345. *
  346. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x5177;&#x6709;&#x4E24;&#x4E2A;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x5C5E;&#x6027;&#x7684;&#x7EC4;&#x4EF6;.
  347. *
  348. * `.``typescript
  349. * @Component({
  350. * selector: &apos;bank-account&apos;,
  351. * inputs: [&apos;bankName&apos;, &apos;id: account-id&apos;],
  352. * template: `
  353. * Bank Name: {{bankName}}
  354. * Account Id: {{id}}
  355. * `
  356. * })
  357. * class BankAccount {
  358. * bankName: string;
  359. * id: string;
  360. *
  361. * // &#x6B64;&#x5C5E;&#x6027;&#x672A;&#x7ED1;&#x5B9A;&#xFF0C;&#x4E0D;&#x4F1A;&#x88AB;Angular&#x81EA;&#x52A8;&#x66F4;&#x65B0;
  362. * normalizedBankName: string;
  363. * }
  364. *
  365. * @Component({
  366. * selector: &apos;app&apos;,
  367. * template: `
  368. * &lt;bank-account bank-name=&quot;RBC&quot; account-id=&quot;4747&quot;&gt;&lt;/bank-account&gt;
  369. * `
  370. * })
  371. * class App {}
  372. * `.``
  373. *
  374. */</span>
  375. inputs?: <span class="hljs-built_in">string</span>[];
  376. <span class="hljs-comment">/**
  377. * &#x679A;&#x4E3E;&#x4E00;&#x7EC4;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x7684;&#x8F93;&#x51FA;&#x5C5E;&#x6027;&#x3002;
  378. *
  379. * &#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;
  380. *
  381. * `outputs`&#x5C5E;&#x6027;&#x5C06;&#x4E00;&#x7EC4;`directiveProperty`&#x5B9A;&#x4E49;&#x4E3A;`bindingProperty`&#x914D;&#x7F6E;:
  382. *
  383. * - `directiveProperty`&#x6307;&#x5B9A;&#x53D1;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7EC4;&#x4EF6;&#x5C5E;&#x6027;.
  384. * - `bindingProperty`&#x6307;&#x5B9A;&#x4E8B;&#x4EF6;&#x5904;&#x7406;&#x7A0B;&#x5E8F;&#x6240;&#x9644;&#x52A0;&#x7684;DOM&#x5C5E;&#x6027;.
  385. *
  386. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/d5CNq7?p=preview&#xFF09;&#xFF09;
  387. *
  388. * `.``typescript
  389. * @Directive({
  390. * selector: &apos;interval-dir&apos;,
  391. * outputs: [&apos;everySecond&apos;, &apos;five5Secs: everyFiveSeconds&apos;]
  392. * })
  393. * class IntervalDir {
  394. * everySecond = new EventEmitter();
  395. * five5Secs = new EventEmitter();
  396. *
  397. * constructor() {
  398. * setInterval(() =&gt; this.everySecond.emit(&quot;event&quot;), 1000);
  399. * setInterval(() =&gt; this.five5Secs.emit(&quot;event&quot;), 5000);
  400. * }
  401. * }
  402. *
  403. * @Component({
  404. * selector: &apos;app&apos;,
  405. * template: `
  406. * &lt;interval-dir (everySecond)=&quot;everySecond()&quot; (everyFiveSeconds)=&quot;everyFiveSeconds()&quot;&gt;
  407. * &lt;/interval-dir&gt;
  408. * `
  409. * })
  410. * class App {
  411. * everySecond() { console.log(&apos;second&apos;); }
  412. * everyFiveSeconds() { console.log(&apos;five seconds&apos;); }
  413. * }
  414. * `.``
  415. *
  416. */</span>
  417. outputs?: <span class="hljs-built_in">string</span>[];
  418. <span class="hljs-comment">/**
  419. * &#x6307;&#x5B9A;&#x4E0E;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x76F8;&#x5173;&#x7684;&#x4E8B;&#x4EF6;&#xFF0C;&#x64CD;&#x4F5C;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;.
  420. *
  421. * ## &#x4E3B;&#x673A;&#x76D1;&#x542C;&#x5668;
  422. *
  423. * &#x901A;&#x8FC7;&#x4E00;&#x7EC4;`&#xFF08;event&#xFF09;`&#x6307;&#x5411;`method`&#x6765;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;&#x6307;&#x4EE4;&#x4FA6;&#x542C;&#x54EA;&#x4E2A;DOM&#x4E8B;&#x4EF6;
  424. * &#x952E;&#x503C;&#x5BF9;:
  425. *
  426. * - `event`: &#x6307;&#x4EE4;&#x76D1;&#x542C;&#x7684;DOM&#x4E8B;&#x4EF6;.
  427. * - `statement`: &#x53D1;&#x751F;&#x4E8B;&#x4EF6;&#x65F6;&#x6267;&#x884C;&#x7684;&#x8BED;&#x53E5;.
  428. * &#x5982;&#x679C;&#x8BE5;&#x8BED;&#x53E5;&#x7684;&#x8BC4;&#x4F30;&#x8FD4;&#x56DE;`false`&#xFF0C;&#x90A3;&#x4E48;`preventDefault`&#x5E94;&#x7528;&#x4E8E;DOM&#x4E8B;&#x4EF6;
  429. *
  430. * &#x8981;&#x4FA6;&#x542C;&#x5168;&#x5C40;&#x4E8B;&#x4EF6;&#xFF0C;&#x5FC5;&#x987B;&#x5C06;&#x4E8B;&#x4EF6;&#x540D;&#x79F0;&#x6DFB;&#x52A0;&#x5230;&#x76EE;&#x6807;.
  431. * &#x76EE;&#x6807;&#x53EF;&#x4EE5;&#x662F;&#x201C;window&#x201D;&#xFF0C;&#x201C;document&#x201D;&#x6216;&#x201C;body&#x201D;.
  432. *
  433. * &#x7F16;&#x5199;&#x6307;&#x4EE4;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x65F6;&#xFF0C;&#x8FD8;&#x53EF;&#x4EE5;&#x53C2;&#x8003;$ event&#x5C40;&#x90E8;&#x53D8;&#x91CF;.
  434. *
  435. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/DlA5KU?p=preview&#xFF09;&#xFF09;
  436. *
  437. * &#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;.
  438. *
  439. * `.``typescript
  440. * @Directive({
  441. * selector: &apos;button[counting]&apos;,
  442. * host: {
  443. * &apos;(click)&apos;: &apos;onClick($event.target)&apos;
  444. * }
  445. * })
  446. * class CountClicks {
  447. * numberOfClicks = 0;
  448. *
  449. * onClick(btn) {
  450. * console.log(&quot;button&quot;, btn, &quot;number of clicks:&quot;, this.numberOfClicks++);
  451. * }
  452. * }
  453. *
  454. * @Component({
  455. * selector: &apos;app&apos;,
  456. * template: `&lt;button counting&gt;Increment&lt;/button&gt;`
  457. * })
  458. * class App {}
  459. * `.``
  460. *
  461. * ## &#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;
  462. *
  463. * &#x6307;&#x5B9A;&#x6307;&#x4EE4;&#x66F4;&#x65B0;&#x7684;DOM&#x5C5E;&#x6027;&#x3002;
  464. *
  465. * &#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#xFF0C;Angular&#x4F1A;&#x81EA;&#x52A8;&#x68C0;&#x67E5;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  466. * &#x5982;&#x679C;&#x7ED1;&#x5B9A;&#x66F4;&#x6539;&#xFF0C;&#x5B83;&#x5C06;&#x66F4;&#x65B0;&#x6307;&#x4EE4;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;.
  467. *
  468. * ### &#x793A;&#x4F8B;&#xFF08;[live demo]&#xFF08;http://plnkr.co/edit/gNg0ED?p=preview&#xFF09;&#xFF09;
  469. *
  470. * &#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;
  471. * &#x8BE5;&#x5143;&#x7D20;&#x5177;&#x6709;ngModel&#x4F2A;&#x6307;&#x4EE4;.
  472. *
  473. * `.``typescript
  474. * @Directive({
  475. * selector: &apos;[ngModel]&apos;,
  476. * host: {
  477. * &apos;[class.valid]&apos;: &apos;valid&apos;,
  478. * &apos;[class.invalid]&apos;: &apos;invalid&apos;
  479. * }
  480. * })
  481. * class NgModelStatus {
  482. * constructor(public control:NgModel) {}
  483. * get valid { return this.control.valid; }
  484. * get invalid { return this.control.invalid; }
  485. * }
  486. *
  487. * @Component({
  488. * selector: &apos;app&apos;,
  489. * template: `&lt;input [(ngModel)]=&quot;prop&quot;&gt;`
  490. * })
  491. * class App {
  492. * prop;
  493. * }
  494. * `.``
  495. *
  496. * ## &#x5C5E;&#x6027;
  497. *
  498. * &#x6307;&#x5B9A;&#x5E94;&#x4F20;&#x64AD;&#x5230;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7684;&#x9759;&#x6001;&#x5C5E;&#x6027;.
  499. *
  500. * ### &#x4F8B;
  501. *
  502. * &#x5728;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;
  503. * &#x4F7F;&#x7528;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#xFF08;&#x8FD9;&#x91CC;&#xFF1A;`&lt;div&gt;`&#xFF09;&#x4E0A;&#x7684;`my-button`&#x6307;&#x4EE4;
  504. * &#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;.
  505. *
  506. * `.``typescript
  507. * @Directive({
  508. * selector: &apos;[my-button]&apos;,
  509. * host: {
  510. * &apos;role&apos;: &apos;button&apos;
  511. * }
  512. * })
  513. * class MyButton {
  514. * }
  515. * `.``
  516. */</span>
  517. host?: {
  518. [key: <span class="hljs-built_in">string</span>]: <span class="hljs-built_in">string</span>;
  519. };
  520. <span class="hljs-comment">/**
  521. * &#x5B9A;&#x4E49;&#x6307;&#x4EE4;&#x548C;&#x5176;&#x8F7B;&#x578B;DOM&#x5B50;&#x9879;&#x53EF;&#x89C1;&#x7684;&#x53EF;&#x6CE8;&#x5C04;&#x5BF9;&#x8C61;&#x96C6;&#x5408;.
  522. *
  523. * ## &#x7B80;&#x4F8B;
  524. *
  525. * &#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7684;&#x7C7B;&#x7684;&#x4F8B;&#x5B50;:
  526. *
  527. * `.``
  528. * class Greeter {
  529. * greet(name:string) {
  530. * return &apos;Hello &apos; + name + &apos;!&apos;;
  531. * }
  532. * }
  533. *
  534. * @Directive({
  535. * selector: &apos;greet&apos;,
  536. * providers: [
  537. * Greeter
  538. * ]
  539. * })
  540. * class HelloWorld {
  541. * greeter:Greeter;
  542. *
  543. * constructor(greeter:Greeter) {
  544. * this.greeter = greeter;
  545. * }
  546. * }
  547. * `.``
  548. */</span>
  549. providers?: Provider[];
  550. <span class="hljs-comment">/**
  551. * &#x5B9A;&#x4E49;&#x53EF;&#x4EE5;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;&#xFF0C;&#x4EE5;&#x5C06;&#x6B64;&#x6307;&#x4EE4;&#x5206;&#x914D;&#x7ED9;&#x53D8;&#x91CF;.
  552. *
  553. * ## &#x7B80;&#x4F8B;
  554. *
  555. * `.``
  556. * @Directive({
  557. * selector: &apos;child-dir&apos;,
  558. * exportAs: &apos;child&apos;
  559. * })
  560. * class ChildDir {
  561. * }
  562. *
  563. * @Component({
  564. * selector: &apos;main&apos;,
  565. * template: `&lt;child-dir #c=&quot;child&quot;&gt;&lt;/child-dir&gt;`
  566. * })
  567. * class MainComponent {
  568. * }
  569. *
  570. * `.``
  571. */</span>
  572. exportAs?: <span class="hljs-built_in">string</span>;
  573. <span class="hljs-comment">/**
  574. * &#x914D;&#x7F6E;&#x5C06;&#x6CE8;&#x5165;&#x5230;&#x6307;&#x4EE4;&#x4E2D;&#x7684;&#x67E5;&#x8BE2;.
  575. *
  576. * &#x5185;&#x5BB9;&#x67E5;&#x8BE2;&#x5728;&#x8C03;&#x7528;`ngAfterContentInit`&#x56DE;&#x8C03;&#x4E4B;&#x524D;&#x8BBE;&#x7F6E;.
  577. * &#x67E5;&#x8BE2;&#x67E5;&#x8BE2;&#x662F;&#x5728;&#x8C03;&#x7528;`ngAfterViewInit`&#x56DE;&#x8C03;&#x4E4B;&#x524D;&#x8BBE;&#x7F6E;&#x7684;.
  578. *
  579. * ### &#x4F8B;
  580. *
  581. * `.``
  582. * @Component({
  583. * selector: &apos;someDir&apos;,
  584. * queries: {
  585. * contentChildren: new ContentChildren(ChildDirective),
  586. * viewChildren: new ViewChildren(ChildDirective)
  587. * },
  588. * template: &apos;&lt;child-directive&gt;&lt;/child-directive&gt;&apos;
  589. * })
  590. * class SomeDir {
  591. * contentChildren: QueryList&lt;ChildDirective&gt;,
  592. * viewChildren: QueryList&lt;ChildDirective&gt;
  593. *
  594. * ngAfterContentInit() {
  595. * // &#x5185;&#x5BB9;&#x8282;&#x70B9;&#x8BBE;&#x7F6E;
  596. * }
  597. *
  598. * ngAfterViewInit() {
  599. * // &#x8BBE;&#x56FE;&#x8282;&#x70B9;&#x8BBE;&#x5728;
  600. * }
  601. * }
  602. * `.``
  603. */</span>
  604. queries?: {
  605. [key: <span class="hljs-built_in">string</span>]: <span class="hljs-built_in">any</span>;
  606. };
  607. }
  608. <span class="hljs-comment">/**
  609. * &#x6307;&#x4EE4;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  610. *
  611. * @&#x7A33;&#x5B9A;
  612. * @&#x6CE8;&#x89E3;
  613. */</span>
  614. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Directive: DirectiveDecorator;
  615. <span class="hljs-comment">/**
  616. * Component&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  617. *
  618. * @stable
  619. */</span>
  620. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> ComponentDecorator {
  621. <span class="hljs-comment">/**
  622. * @whatItDoes&#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;&#x89D2;&#x5EA6;&#x7EC4;&#x4EF6;&#x5E76;&#x6536;&#x96C6;&#x7EC4;&#x4EF6;&#x914D;&#x7F6E;&#x5143;&#x6570;&#x636E;.
  623. *
  624. * @&#x5982;&#x4F55;&#x4F7F;&#x7528;
  625. *
  626. * {@example core/ts/metadata/metadata.ts region=&apos;component&apos;}
  627. *
  628. * @&#x63CF;&#x8FF0;
  629. * &#x7EC4;&#x4EF6;&#x88C5;&#x9970;&#x5668;&#x5141;&#x8BB8;&#x60A8;&#x5C06;&#x7C7B;&#x6807;&#x8BB0;&#x4E3A;&#x89D2;&#x5EA6;&#x7EC4;&#x4EF6;&#xFF0C;
  630. * &#x5E76;&#x63D0;&#x4F9B;&#x5176;&#x4ED6;&#x5143;&#x6570;&#x636E;&#xFF0C;&#x4EE5;&#x786E;&#x5B9A;&#x5982;&#x4F55;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x5904;&#x7406;&#xFF0C;
  631. * &#x5B9E;&#x4F8B;&#x5316;&#x548C;&#x4F7F;&#x7528;&#x7EC4;&#x4EF6;.
  632. *
  633. * &#x7EC4;&#x4EF6;&#x662F;Angular&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E2D;UI&#x6700;&#x57FA;&#x672C;&#x7684;&#x6784;&#x5EFA;&#x5757;.
  634. * Angular&#x5E94;&#x7528;&#x662F;&#x4E00;&#x4E2A;&#x89D2;&#x5EA6;&#x7684;&#x7EC4;&#x4EF6;&#x6811;.
  635. * Angular&#x7EC4;&#x4EF6;&#x662F;&#x6307;&#x4EE4;&#x7684;&#x4E00;&#x4E2A;&#x5B50;&#x96C6;&#x3002;
  636. * &#x4E0E;&#x6307;&#x4EE4;&#x4E0D;&#x540C;&#xFF0C;&#x7EC4;&#x4EF6;&#x59CB;&#x7EC8;&#x5177;&#x6709;&#x6A21;&#x677F;&#xFF0C;
  637. * &#x5E76;&#x4E14;&#x53EA;&#x80FD;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x5143;&#x7D20;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;.
  638. *
  639. * &#x7EC4;&#x4EF6;&#x5FC5;&#x987B;&#x5C5E;&#x4E8E;NgModule&#xFF0C;
  640. * &#x4EE5;&#x4FBF;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x53E6;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x6216;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#x3002;
  641. * &#x8981;&#x6307;&#x5B9A;&#x7EC4;&#x4EF6;&#x662F;NgModule&#x7684;&#x6210;&#x5458;&#xFF0C;
  642. * &#x5E94;&#x5C06;&#x5176;&#x5217;&#x5728;&#x8BE5;NgModule&#x7684;&#x201C;&#x58F0;&#x660E;&#x201D;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;
  643. *
  644. * &#x9664;&#x4E86;&#x901A;&#x8FC7;Component&#x88C5;&#x9970;&#x5668;&#x6307;&#x5B9A;&#x7684;&#x5143;&#x6570;&#x636E;&#x914D;&#x7F6E;&#x4E4B;&#x5916;,
  645. * &#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;.
  646. *
  647. * **&#x5143;&#x6570;&#x636E;&#x5C5E;&#x6027;:**
  648. *
  649. * * **animations** - &#x8BE5;&#x7EC4;&#x4EF6;&#x7684;&#x52A8;&#x753B;&#x5217;&#x8868;
  650. * * **changeDetection** - &#x6539;&#x53D8;&#x8BE5;&#x7EC4;&#x4EF6;&#x4F7F;&#x7528;&#x7684;&#x68C0;&#x6D4B;&#x7B56;&#x7565;
  651. * * **encapsulation** - &#x8BE5;&#x7EC4;&#x4EF6;&#x4F7F;&#x7528;&#x7684;&#x6837;&#x5F0F;&#x5C01;&#x88C5;&#x7B56;&#x7565;
  652. * * **entryComponents** - &#x52A8;&#x6001;&#x63D2;&#x5165;&#x5230;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x89C6;&#x56FE;&#x4E2D;&#x7684;&#x7EC4;&#x4EF6;&#x5217;&#x8868;
  653. * * **exportAs** - &#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5BFC;&#x51FA;&#x7684;&#x540D;&#x79F0;
  654. * * **host** - &#x7C7B;&#x5C5E;&#x6027;&#x6620;&#x5C04;&#x5230;&#x4E8B;&#x4EF6;&#xFF0C;&#x5C5E;&#x6027;&#x548C;&#x5C5E;&#x6027;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7ED1;&#x5B9A;
  655. * * **inputs** - &#x5C06;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x5217;&#x8868;&#x4F5C;&#x4E3A;&#x7EC4;&#x4EF6;&#x8F93;&#x5165;&#x7684;&#x6570;&#x636E;&#x7ED1;&#x5B9A;
  656. * * **interpolation** - &#x6B64;&#x7EC4;&#x4EF6;&#x6A21;&#x677F;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x81EA;&#x5B9A;&#x4E49;&#x63D2;&#x503C;&#x6807;&#x8BB0;
  657. * * **moduleId** - &#x5B9A;&#x4E49;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x6587;&#x4EF6;&#x7684;ES / CommonJS&#x6A21;&#x5757;ID
  658. * * **outputs** - &#x5217;&#x51FA;&#x5176;&#x4ED6;&#x53EF;&#x4EE5;&#x8BA2;&#x9605;&#x7684;&#x8F93;&#x51FA;&#x4E8B;&#x4EF6;&#x7684;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;
  659. * * **providers** - &#x8BE5;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x5B50;&#x7EC4;&#x4EF6;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  660. * * **queries** - &#x914D;&#x7F6E;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7EC4;&#x4EF6;&#x7684;&#x67E5;&#x8BE2;
  661. * * **selector** - css&#x9009;&#x62E9;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x6A21;&#x677F;&#x4E2D;&#x7684;&#x6B64;&#x7EC4;&#x4EF6;
  662. * * **styleUrls** - &#x8981;&#x5E94;&#x7528;&#x4E8E;&#x6B64;&#x7EC4;&#x4EF6;&#x89C6;&#x56FE;&#x7684;&#x6837;&#x5F0F;&#x8868;&#x7684;URL&#x5217;&#x8868;
  663. * * **styles** - &#x5185;&#x8054;&#x5B9A;&#x4E49;&#x7684;&#x6837;&#x5F0F;&#x5E94;&#x7528;&#x4E8E;&#x6B64;&#x7EC4;&#x4EF6;&#x7684;&#x89C6;&#x56FE;
  664. * * **template** - &#x89C6;&#x56FE;&#x7684;&#x5185;&#x8054;&#x5B9A;&#x4E49;&#x6A21;&#x677F;
  665. * * **templateUrl** - url&#x5230;&#x5305;&#x542B;&#x89C6;&#x56FE;&#x6A21;&#x677F;&#x7684;&#x5916;&#x90E8;&#x6587;&#x4EF6;
  666. * * **viewProviders** - &#x6B64;&#x7EC4;&#x4EF6;&#x53CA;&#x5176;&#x67E5;&#x770B;&#x5B50;&#x9879;&#x53EF;&#x7528;&#x7684;&#x63D0;&#x4F9B;&#x7A0B;&#x5E8F;&#x5217;&#x8868;
  667. *
  668. * ### &#x4F8B;
  669. *
  670. * {@example core/ts/metadata/metadata.ts region=&apos;component&apos;}
  671. *
  672. * @stable
  673. * @Annotation
  674. */</span>
  675. (obj: Component): TypeDecorator;
  676. <span class="hljs-comment">/**
  677. * &#x8BF7;&#x53C2;&#x9605;{@link Component}&#x88C5;&#x9970;&#x5668;&#x3002;
  678. */</span>
  679. <span class="hljs-keyword">new</span> (obj: Component): Component;
  680. }
  681. <span class="hljs-comment">/**
  682. * &#x7EC4;&#x4EF6;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  683. *
  684. * @stable
  685. */</span>
  686. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Component <span class="hljs-keyword">extends</span> Directive {
  687. <span class="hljs-comment">/**
  688. * &#x5B9A;&#x4E49;&#x4F7F;&#x7528;&#x7684;&#x53D8;&#x66F4;&#x68C0;&#x6D4B;&#x7B56;&#x7565;.
  689. *
  690. * &#x5F53;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x88AB;&#x5B9E;&#x4F8B;&#x5316;&#x65F6;&#xFF0C;Angular&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x53D8;&#x5316;&#x68C0;&#x6D4B;&#x5668;&#xFF0C;
  691. * &#x5B83;&#x8D1F;&#x8D23;&#x4F20;&#x64AD;&#x7EC4;&#x4EF6;&#x7684;&#x7ED1;&#x5B9A;.
  692. *
  693. * `changeDetection`&#x5C5E;&#x6027;&#x5B9A;&#x4E49;&#xFF0C;
  694. * &#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;.
  695. */</span>
  696. changeDetection?: ChangeDetectionStrategy;
  697. <span class="hljs-comment">/**
  698. * &#x5B9A;&#x4E49;&#x53EF;&#x89C6;&#x5BF9;&#x8C61;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x4F7F;&#x5176;DOM DOM&#x5B50;&#x9879;&#x7684;&#x89C6;&#x56FE;&#x53EF;&#x89C1;.
  699. *
  700. * ## Simple Example
  701. *
  702. * &#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x6CE8;&#x5165;&#x7684;&#x7C7B;&#x7684;&#x4F8B;&#x5B50;:
  703. *
  704. * `.``
  705. * class Greeter {
  706. * greet(name:string) {
  707. * return &apos;Hello &apos; + name + &apos;!&apos;;
  708. * }
  709. * }
  710. *
  711. * @Directive({
  712. * selector: &apos;needs-greeter&apos;
  713. * })
  714. * class NeedsGreeter {
  715. * greeter:Greeter;
  716. *
  717. * constructor(greeter:Greeter) {
  718. * this.greeter = greeter;
  719. * }
  720. * }
  721. *
  722. * @Component({
  723. * selector: &apos;greet&apos;,
  724. * viewProviders: [
  725. * Greeter
  726. * ],
  727. * template: `&lt;needs-greeter&gt;&lt;/needs-greeter&gt;`
  728. * })
  729. * class HelloWorld {
  730. * }
  731. *
  732. * `.``
  733. */</span>
  734. viewProviders?: Provider[];
  735. <span class="hljs-comment">/**
  736. * &#x5305;&#x542B;&#x7EC4;&#x4EF6;&#x7684;&#x6A21;&#x5757;&#x7684;&#x6A21;&#x5757;ID.
  737. * &#x9700;&#x8981;&#x80FD;&#x591F;&#x89E3;&#x6790;&#x6A21;&#x677F;&#x548C;&#x6837;&#x5F0F;&#x7684;&#x76F8;&#x5BF9;URL.
  738. * &#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;.
  739. *
  740. *
  741. * ## &#x7B80;&#x4F8B;
  742. *
  743. * `.``
  744. * @Directive({
  745. * selector: &apos;someDir&apos;,
  746. * moduleId: module.id
  747. * })
  748. * class SomeDir {
  749. * }
  750. *
  751. * `.``
  752. */</span>
  753. moduleId?: <span class="hljs-built_in">string</span>;
  754. <span class="hljs-comment">/**
  755. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x6A21;&#x677F;URL.
  756. *
  757. *&#x6BCF;&#x4E2A;View&#x53EA;&#x80FD;&#x5B9A;&#x4E49;&#x201C;templateUrl&#x201D;&#x6216;&#x201C;template&#x201D;&#x4E4B;&#x4E00;.
  758. */</span>
  759. templateUrl?: <span class="hljs-built_in">string</span>;
  760. <span class="hljs-comment">/**
  761. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x5185;&#x8054;&#x6A21;&#x677F;.
  762. *
  763. * &#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x53EA;&#x80FD;&#x5B9A;&#x4E49;&#x201C;templateUrl&#x201D;&#x6216;&#x201C;template&#x201D;&#x4E4B;&#x4E00;.
  764. */</span>
  765. template?: <span class="hljs-built_in">string</span>;
  766. <span class="hljs-comment">/**
  767. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x6837;&#x5F0F;&#x8868;URL.
  768. */</span>
  769. styleUrls?: <span class="hljs-built_in">string</span>[];
  770. <span class="hljs-comment">/**
  771. * &#x6307;&#x5B9A;Angular&#x7EC4;&#x4EF6;&#x7684;&#x5185;&#x8054;&#x6837;&#x5F0F;&#x8868;.
  772. */</span>
  773. styles?: <span class="hljs-built_in">string</span>[];
  774. <span class="hljs-comment">/**
  775. * &#x901A;&#x8FC7;&#x7C7B;&#x4F3C;&#x52A8;&#x753B;&#x7684;DSL&#x5728;&#x7EC4;&#x4EF6;&#x4E0A;&#x5B9A;&#x4E49;&#x52A8;&#x753B;&#x3002;
  776. * &#x63CF;&#x8FF0;&#x52A8;&#x753B;&#x7684;&#x8FD9;&#x79CD;DSL&#x65B9;&#x6CD5;&#x5141;&#x8BB8;&#x7075;&#x6D3B;&#x6027;&#xFF0C;
  777. * &#x8FD9;&#x65E2;&#x6709;&#x76CA;&#x4E8E;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x548C;&#x6846;&#x67B6;.
  778. *
  779. * &#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;
  780. * &#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;
  781. * &#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;.
  782. * (Angular&#x8FD8;&#x53EF;&#x4EE5;&#x5728;&#x5E55;&#x540E;&#x8FDB;&#x884C;&#x4F18;&#x5316;&#xFF0C;&#x4F7F;&#x52A8;&#x753B;&#x66F4;&#x52A0;&#x51FA;&#x8272;.)
  783. *
  784. * &#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;
  785. * &#x5B83;&#x4EEC;&#x4F4D;&#x4E8E;&#x201C;&#x52A8;&#x753B;&#x201D;&#x6CE8;&#x91CA;&#x5143;&#x6570;&#x636E;&#x7684;&#x5185;&#x90E8;&#x3002;
  786. * &#x5728;&#x89E6;&#x53D1;&#x5668;&#x4E2D;&#xFF0C;&#x53EF;&#x4EE5;&#x653E;&#x7F6E;{@link&#x72B6;&#x6001;}&#x548C;{@link&#x8F6C;&#x6362;&#x8F6C;&#x6362;}&#x6761;&#x76EE;.
  787. *
  788. * `.``typescript
  789. * @Component({
  790. * selector: &apos;animation-cmp&apos;,
  791. * templateUrl: &apos;animation-cmp.html&apos;,
  792. * animations: [
  793. * // &#x8FD9;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x52A8;&#x753B;&#x89E6;&#x53D1;&#x5668;&#xFF0C;&#x5B83;&#x5C06;&#x5305;&#x542B;&#x6211;&#x4EEC;&#x7684;&#x72B6;&#x6001;&#x53D8;&#x5316;&#x52A8;&#x753B;.
  794. * trigger(&apos;myTriggerName&apos;, [
  795. * // &#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;.
  796. * state(&apos;on&apos;, style({ opacity: 1 }),
  797. * state(&apos;off&apos;, style({ opacity: 0 }),
  798. *
  799. * // &#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;
  800. * transition(&apos;on =&gt; off&apos;, [
  801. * animate(&quot;1s&quot;)
  802. * ])
  803. * ])
  804. * ]
  805. * })
  806. * `.``
  807. *
  808. * &#x5982;&#x4E0A;&#x9762;&#x7684;&#x4EE3;&#x7801;&#x6240;&#x793A;&#xFF0C;
  809. * &#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;
  810. * &#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;
  811. * &#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;.
  812. *
  813. * `.``html
  814. * &lt;!-- animation-cmp.html --&gt;
  815. * &lt;div @myTriggerName=&quot;expression&quot;&gt;...&lt;/div&gt;
  816. * `.``
  817. *
  818. * &#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;
  819. * &#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;
  820. * &#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;.
  821. *
  822. * ### DSL&#x52A8;&#x753B;&#x529F;&#x80FD;
  823. *
  824. * &#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;:
  825. *
  826. * - {@link trigger trigger()}
  827. * - {@link state state()}
  828. * - {@link transition transition()}
  829. * - {@link group group()}
  830. * - {@link sequence sequence()}
  831. * - {@link style style()}
  832. * - {@link animate animate()}
  833. * - {@link keyframes keyframes()}
  834. */</span>
  835. animations?: <span class="hljs-built_in">any</span>[];
  836. <span class="hljs-comment">/**
  837. * &#x6307;&#x5B9A;&#x6A21;&#x677F;&#x548C;&#x6837;&#x5F0F;&#x5E94;&#x5982;&#x4F55;&#x5C01;&#x88C5;:
  838. * - {@link ViewEncapsulation#Native `ViewEncapsulation.Native`} to use shadow roots - &#x4EC5;&#x5728;&#x5E73;&#x53F0;&#x4E0A;&#x53EF;&#x7528;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x624D;&#x8D77;&#x4F5C;&#x7528;,
  839. * - {@link ViewEncapsulation#Emulated `ViewEncapsulation.Emulated`} &#x4F7F;&#x7528;&#x6A21;&#x4EFF;&#x672C;&#x673A;&#x884C;&#x4E3A;&#x7684;shimmed CSS,
  840. * - {@link ViewEncapsulation#None `ViewEncapsulation.None`} &#x4F7F;&#x7528;&#x5168;&#x5C40;CSS&#x800C;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x5C01;&#x88C5;.
  841. *
  842. * &#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;.
  843. *
  844. * &#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;.
  845. */</span>
  846. encapsulation?: ViewEncapsulation;
  847. <span class="hljs-comment">/**
  848. * &#x8986;&#x76D6;&#x9ED8;&#x8BA4;&#x7684;&#x5C01;&#x88C5;&#x5F00;&#x59CB;&#x548C;&#x7ED3;&#x675F;&#x5206;&#x9694;&#x7B26;&#xFF08;&#x5206;&#x522B;&#x4E3A;{{`&#x548C;`}}`&#xFF09;
  849. */</span>
  850. interpolation?: [<span class="hljs-built_in">string</span>, <span class="hljs-built_in">string</span>];
  851. <span class="hljs-comment">/**
  852. * &#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}.
  853. */</span>
  854. 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;;
  855. }
  856. <span class="hljs-comment">/**
  857. * &#x7EC4;&#x4EF6;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  858. *
  859. * @stable
  860. * @Annotation
  861. */</span>
  862. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Component: ComponentDecorator;
  863. <span class="hljs-comment">/**
  864. * &#x7BA1;&#x9053;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  865. *
  866. * @stable
  867. */</span>
  868. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> PipeDecorator {
  869. <span class="hljs-comment">/**
  870. * &#x58F0;&#x660E;&#x53EF;&#x91CD;&#x590D;&#x4F7F;&#x7528;&#x7684;&#x7BA1;&#x9053;&#x529F;&#x80FD;.
  871. *
  872. * &#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;.
  873. *
  874. * &#x5F53;&#x672A;&#x6307;&#x5B9A;&#x65F6;&#xFF0C;&#x7BA1;&#x9053;&#x9ED8;&#x8BA4;&#x4E3A;&#x7EAF;.
  875. */</span>
  876. (obj: Pipe): TypeDecorator;
  877. <span class="hljs-comment">/**
  878. * &#x8BF7;&#x53C2;&#x9605;{@link Pipe}&#x88C5;&#x9970;&#x5668;.
  879. */</span>
  880. <span class="hljs-keyword">new</span> (obj: Pipe): Pipe;
  881. }
  882. <span class="hljs-comment">/**
  883. * &#x7BA1;&#x9053;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  884. *
  885. * @stable
  886. */</span>
  887. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Pipe {
  888. name: <span class="hljs-built_in">string</span>;
  889. pure?: <span class="hljs-built_in">boolean</span>;
  890. }
  891. <span class="hljs-comment">/**
  892. * &#x7BA1;&#x9053;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  893. *
  894. * @stable
  895. * @Annotation
  896. */</span>
  897. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Pipe: PipeDecorator;
  898. <span class="hljs-comment">/**
  899. * &#x8F93;&#x5165;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  900. *
  901. * @stable
  902. */</span>
  903. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> InputDecorator {
  904. <span class="hljs-comment">/**
  905. * &#x58F0;&#x660E;&#x6570;&#x636E;&#x7ED1;&#x5B9A;&#x8F93;&#x5165;&#x5C5E;&#x6027;.
  906. *
  907. * Angular.
  908. *
  909. * `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;.
  910. *
  911. * ### Example
  912. *
  913. * &#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x5177;&#x6709;&#x4E24;&#x4E2A;&#x8F93;&#x5165;&#x5C5E;&#x6027;&#x7684;&#x7EC4;&#x4EF6;.
  914. *
  915. * `.``typescript
  916. * @Component({
  917. * selector: &apos;bank-account&apos;,
  918. * template: `
  919. * Bank Name: {{bankName}}
  920. * Account Id: {{id}}
  921. * `
  922. * })
  923. * class BankAccount {
  924. * @Input() bankName: string;
  925. * @Input(&apos;account-id&apos;) id: string;
  926. *
  927. * // &#x6B64;&#x5C5E;&#x6027;&#x672A;&#x7ED1;&#x5B9A;&#xFF0C;&#x4E0D;&#x4F1A;&#x88AB;Angular&#x81EA;&#x52A8;&#x66F4;&#x65B0;
  928. * normalizedBankName: string;
  929. * }
  930. *
  931. * @Component({
  932. * selector: &apos;app&apos;,
  933. * template: `
  934. * &lt;bank-account bank-name=&quot;RBC&quot; account-id=&quot;4747&quot;&gt;&lt;/bank-account&gt;
  935. * `
  936. * })
  937. *
  938. * class App {}
  939. * `.``
  940. * @stable
  941. */</span>
  942. (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  943. <span class="hljs-keyword">new</span> (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  944. }
  945. <span class="hljs-comment">/**
  946. * &#x8F93;&#x5165;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  947. *
  948. * @stable
  949. */</span>
  950. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Input {
  951. <span class="hljs-comment">/**
  952. * &#x5728;&#x6A21;&#x677F;&#x4E2D;&#x5B9E;&#x4F8B;&#x5316;&#x7EC4;&#x4EF6;&#x65F6;&#x4F7F;&#x7528;&#x7684;&#x540D;&#x79F0;.
  953. */</span>
  954. bindingPropertyName?: <span class="hljs-built_in">string</span>;
  955. }
  956. <span class="hljs-comment">/**
  957. * &#x8F93;&#x5165;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  958. *
  959. * @stable
  960. * @Annotation
  961. */</span>
  962. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Input: InputDecorator;
  963. <span class="hljs-comment">/**
  964. * &#x8F93;&#x51FA;&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  965. *
  966. * @stable
  967. */</span>
  968. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> OutputDecorator {
  969. <span class="hljs-comment">/**
  970. * &#x58F0;&#x660E;&#x4E00;&#x4E2A;&#x4E8B;&#x4EF6;&#x7ED1;&#x5B9A;&#x7684;&#x8F93;&#x51FA;&#x5C5E;&#x6027;.
  971. *
  972. * &#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;.
  973. *
  974. * `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;
  975. * &#x672A;&#x63D0;&#x4F9B;&#x65F6;&#xFF0C;&#x5C06;&#x4F7F;&#x7528;&#x88C5;&#x9970;&#x5C5E;&#x6027;&#x7684;&#x540D;&#x79F0;.
  976. *
  977. * ### &#x4F8B;
  978. *
  979. * `.``typescript
  980. * @Directive({
  981. * selector: &apos;interval-dir&apos;,
  982. * })
  983. * class IntervalDir {
  984. * @Output() everySecond = new EventEmitter();
  985. * @Output(&apos;everyFiveSeconds&apos;) five5Secs = new EventEmitter();
  986. *
  987. * constructor() {
  988. * setInterval(() =&gt; this.everySecond.emit(&quot;event&quot;), 1000);
  989. * setInterval(() =&gt; this.five5Secs.emit(&quot;event&quot;), 5000);
  990. * }
  991. * }
  992. *
  993. * @Component({
  994. * selector: &apos;app&apos;,
  995. * template: `
  996. * &lt;interval-dir (everySecond)=&quot;everySecond()&quot; (everyFiveSeconds)=&quot;everyFiveSeconds()&quot;&gt;
  997. * &lt;/interval-dir&gt;
  998. * `
  999. * })
  1000. * class App {
  1001. * everySecond() { console.log(&apos;second&apos;); }
  1002. * everyFiveSeconds() { console.log(&apos;five seconds&apos;); }
  1003. * }
  1004. * `.``
  1005. * @stable
  1006. */</span>
  1007. (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1008. <span class="hljs-keyword">new</span> (bindingPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1009. }
  1010. <span class="hljs-comment">/**
  1011. * &#x8F93;&#x51FA;&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  1012. *
  1013. * @stable
  1014. */</span>
  1015. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> Output {
  1016. bindingPropertyName?: <span class="hljs-built_in">string</span>;
  1017. }
  1018. <span class="hljs-comment">/**
  1019. * &#x8F93;&#x51FA;&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  1020. *
  1021. * @stable
  1022. * @Annotation
  1023. */</span>
  1024. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> Output: OutputDecorator;
  1025. <span class="hljs-comment">/**
  1026. * HostBinding&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  1027. *
  1028. * @stable
  1029. */</span>
  1030. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostBindingDecorator {
  1031. <span class="hljs-comment">/**
  1032. * &#x58F0;&#x660E;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  1033. *
  1034. * &#x5728;&#x66F4;&#x6539;&#x68C0;&#x6D4B;&#x671F;&#x95F4;&#xFF0C;Angular&#x4F1A;&#x81EA;&#x52A8;&#x68C0;&#x67E5;&#x4E3B;&#x673A;&#x5C5E;&#x6027;&#x7ED1;&#x5B9A;.
  1035. * &#x5982;&#x679C;&#x7ED1;&#x5B9A;&#x66F4;&#x6539;&#xFF0C;&#x5B83;&#x5C06;&#x66F4;&#x65B0;&#x6307;&#x4EE4;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;.
  1036. *
  1037. * `HostBinding`&#x63A5;&#x53D7;&#x4E00;&#x4E2A;&#x53EF;&#x9009;&#x53C2;&#x6570;&#xFF0C;
  1038. * &#x6307;&#x5B9A;&#x8981;&#x66F4;&#x65B0;&#x7684;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x7684;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x3002;
  1039. * &#x672A;&#x63D0;&#x4F9B;&#x65F6;&#xFF0C;&#x4F7F;&#x7528;&#x7C7B;&#x5C5E;&#x6027;&#x540D;&#x79F0;.
  1040. *
  1041. * ### &#x4F8B;
  1042. *
  1043. * &#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;.
  1044. *
  1045. * `.``typescript
  1046. * @Directive({selector: &apos;[ngModel]&apos;})
  1047. * class NgModelStatus {
  1048. * constructor(public control:NgModel) {}
  1049. * @HostBinding(&apos;class.valid&apos;) get valid() { return this.control.valid; }
  1050. * @HostBinding(&apos;class.invalid&apos;) get invalid() { return this.control.invalid; }
  1051. * }
  1052. *
  1053. * @Component({
  1054. * selector: &apos;app&apos;,
  1055. * template: `&lt;input [(ngModel)]=&quot;prop&quot;&gt;`,
  1056. * })
  1057. * class App {
  1058. * prop;
  1059. * }
  1060. * `.``
  1061. * @stable
  1062. */</span>
  1063. (hostPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1064. <span class="hljs-keyword">new</span> (hostPropertyName?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">any</span>;
  1065. }
  1066. <span class="hljs-comment">/**
  1067. * HostBinding&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  1068. *
  1069. * @stable
  1070. */</span>
  1071. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostBinding {
  1072. hostPropertyName?: <span class="hljs-built_in">string</span>;
  1073. }
  1074. <span class="hljs-comment">/**
  1075. * HostBinding&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  1076. *
  1077. * @stable
  1078. * @Annotation
  1079. */</span>
  1080. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> HostBinding: HostBindingDecorator;
  1081. <span class="hljs-comment">/**
  1082. * HostListener&#x88C5;&#x9970;&#x5668;/&#x6784;&#x9020;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;.
  1083. *
  1084. * @stable
  1085. */</span>
  1086. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostListenerDecorator {
  1087. <span class="hljs-comment">/**
  1088. * &#x58F0;&#x660E;&#x4E3B;&#x673A;&#x4FA6;&#x542C;&#x5668;.
  1089. *
  1090. * &#x5F53;&#x4E3B;&#x673A;&#x5143;&#x7D20;&#x53D1;&#x51FA;&#x6307;&#x5B9A;&#x7684;&#x4E8B;&#x4EF6;&#x65F6;&#xFF0C;Angular&#x5C06;&#x8C03;&#x7528;&#x88C5;&#x9970;&#x7684;&#x65B9;&#x6CD5;.
  1091. *
  1092. * &#x5982;&#x679C;&#x88C5;&#x9970;&#x65B9;&#x6CD5;&#x8FD4;&#x56DE;`false`&#xFF0C;&#x90A3;&#x4E48;`preventDefault`&#x5E94;&#x7528;&#x4E8E;DOM&#x4E8B;&#x4EF6;.
  1093. *
  1094. * ### Example
  1095. *
  1096. * &#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;.
  1097. *
  1098. * `.``typescript
  1099. * @Directive({selector: &apos;button[counting]&apos;})
  1100. * class CountClicks {
  1101. * numberOfClicks = 0;
  1102. *
  1103. * @HostListener(&apos;click&apos;, [&apos;$event.target&apos;])
  1104. * onClick(btn) {
  1105. * console.log(&apos;button&apos;, btn, &apos;number of clicks:&apos;, this.numberOfClicks++);
  1106. * }
  1107. * }
  1108. *
  1109. * @Component({
  1110. * selector: &apos;app&apos;,
  1111. * template: &apos;&lt;button counting&gt;Increment&lt;/button&gt;&apos;,
  1112. * })
  1113. * class App {}
  1114. * `.``
  1115. * @stable
  1116. * @Annotation
  1117. */</span>
  1118. (eventName: <span class="hljs-built_in">string</span>, args?: <span class="hljs-built_in">string</span>[]): <span class="hljs-built_in">any</span>;
  1119. <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>;
  1120. }
  1121. <span class="hljs-comment">/**
  1122. * HostListener&#x5143;&#x6570;&#x636E;&#x7684;&#x7C7B;&#x578B;.
  1123. *
  1124. * @stable
  1125. */</span>
  1126. <span class="hljs-keyword">export</span> <span class="hljs-keyword">interface</span> HostListener {
  1127. eventName?: <span class="hljs-built_in">string</span>;
  1128. args?: <span class="hljs-built_in">string</span>[];
  1129. }
  1130. <span class="hljs-comment">/**
  1131. * HostListener&#x88C5;&#x9970;&#x5668;&#x548C;&#x5143;&#x6570;&#x636E;.
  1132. *
  1133. * @stable
  1134. * @Annotation
  1135. */</span>
  1136. <span class="hljs-keyword">export</span> <span class="hljs-keyword">declare</span> <span class="hljs-keyword">const</span> HostListener: HostListenerDecorator;
  1137. </code></pre>
  1138. </div>
  1139. <hr>
  1140. <div class="btn-group btn-group-justified">
  1141. <a class="btn" href="01_formControl.html"><b>上一页:</b> formControl</a>
  1142. <a class="btn" href="03_ng_model.html"><b>下一页:</b> ngModel</a>
  1143. </div>
  1144. </div>
  1145. <div class="search-results">
  1146. <div class="has-results">
  1147. <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
  1148. <ul class="search-results-list"></ul>
  1149. </div>
  1150. <div class="no-results">
  1151. <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
  1152. </div>
  1153. </div>
  1154. </div>
  1155. </div>
  1156. </div>
  1157. </div>
  1158. </div>
  1159. </div>
  1160. <footer class="gb-page-footer">
  1161. <div class="container">
  1162. <ul class="menu">
  1163. <li class="pull-right">
  1164. <span class="service-info">Copyright GitBook 2018</span>
  1165. </li>
  1166. <li>
  1167. <a href="#">Return to the top</a>
  1168. </li>
  1169. <li>
  1170. <a href="#">Updated May 30th 18</a>
  1171. </li>
  1172. </ul>
  1173. </div>
  1174. </footer>
  1175. </div>
  1176. <script src="../../../gitbook/gitbook.js"></script>
  1177. <script src="../../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
  1178. <script src="../../../gitbook/gitbook-plugin-search-pro/search.js"></script>
  1179. <script src="../../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
  1180. <script src="../../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
  1181. <script>
  1182. (function() {
  1183. 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-31T08:39:58.544Z"},"basePath":"../../..","book":{"language":""}});
  1184. })();
  1185. </script>
  1186. </body>
  1187. </html>