-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
109 lines (98 loc) · 69.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!DOCTYPE html><html lang="zh"><head>
<link href="/assets/css/material-icons.css" rel="stylesheet">
<link href="/assets/css/material-roboto-mono.css" rel="stylesheet">
<link href="/assets/css/translator.css" rel="stylesheet">
<meta charset="utf-8">
<title>Awesome Angular 欢迎您! - Angular 资源集锦</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="styles.b6a565dc7be1d81b4b6c.css"><style></style><style>.sidenav[_ngcontent-awesomeAngularApp-c89]{width:300px}.mat-toolbar.mat-primary[_ngcontent-awesomeAngularApp-c89]{flex:none}.mat-toolbar.mat-primary.header[_ngcontent-awesomeAngularApp-c89]{top:0;margin-bottom:8px}app-icon-angular[_ngcontent-awesomeAngularApp-c89]{margin-right:.5em}[mat-button][_ngcontent-awesomeAngularApp-c89]{min-width:auto}[mat-button].active[_ngcontent-awesomeAngularApp-c89]{margin-bottom:-2px;border-bottom:2px solid #fff}mat-sidenav-content[_ngcontent-awesomeAngularApp-c89]{padding-left:1rem;display:flex}mat-sidenav-content[_ngcontent-awesomeAngularApp-c89] > main[_ngcontent-awesomeAngularApp-c89]{flex:auto;min-height:100vh;padding:0 1em}mat-sidenav-content[_ngcontent-awesomeAngularApp-c89] > app-outline[_ngcontent-awesomeAngularApp-c89]{flex:none;width:200px}a.site-title[_ngcontent-awesomeAngularApp-c89]{text-decoration:none;color:#fff}a.site-title[_ngcontent-awesomeAngularApp-c89]:visited{color:#fff}</style><style>[_nghost-awesomeAngularApp-c90]{display:block;padding:5px 16px}input[_ngcontent-awesomeAngularApp-c90]{box-sizing:border-box;width:100%;font-size:1rem;padding:.3rem 0 .3rem 1.5rem;margin-top:1rem;border-radius:0;border:none;border-bottom:1px solid rgba(0,0,0,.12);background:url(search.bcd83b9427df63d2becc.svg) no-repeat .3rem}input[_ngcontent-awesomeAngularApp-c90]:focus{outline:none}</style><style>.mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px}@media(hover: none){.mat-list-option:not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}
</style><style>[_nghost-awesomeAngularApp-c92]{display:block}app-nav-node[_ngcontent-awesomeAngularApp-c92]{margin-left:1rem}.title[_ngcontent-awesomeAngularApp-c92]{flex:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}mat-list-item[_ngcontent-awesomeAngularApp-c92] .title[_ngcontent-awesomeAngularApp-c92]{display:inline-block;padding:12px 0}</style><style>.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}
</style><style>svg[_ngcontent-awesomeAngularApp-c83]{vertical-align:middle}</style><style>.mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}
</style><style>.mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button[disabled],.mat-icon-button[disabled],.mat-stroked-button[disabled],.mat-flat-button[disabled]{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button[disabled]{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab[disabled]{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab[disabled]{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.cdk-high-contrast-active .mat-button-focus-overlay{background-color:#fff}.cdk-high-contrast-black-on-white .mat-button-focus-overlay{background-color:#000}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:block;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}
</style><style>svg[_ngcontent-awesomeAngularApp-c86]{vertical-align:middle}</style><style>[_nghost-awesomeAngularApp-c88]{display:block;padding-left:3px}ul.nav[_ngcontent-awesomeAngularApp-c88]{list-style:none;padding:0;border-left:1px solid rgba(0,0,0,.12)}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88]{position:relative}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88]:before{position:absolute;content:"";display:block;left:-3px;top:0;bottom:0;height:6px;width:6px;margin:auto;border-radius:50%}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88]:hover:before{background:rgba(0,0,0,.38)}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item.active[_ngcontent-awesomeAngularApp-c88]:before{background:#1976d2}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link[_ngcontent-awesomeAngularApp-c88]{display:block;text-decoration:none;color:rgba(0,0,0,.54);margin:0 1em;padding:.5em 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.active[_ngcontent-awesomeAngularApp-c88], ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link[_ngcontent-awesomeAngularApp-c88]:hover{color:#1976d2}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.outline-h1[_ngcontent-awesomeAngularApp-c88]{padding-bottom:.5em;margin-bottom:.5em;border-bottom:1px solid rgba(0,0,0,.12)}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.outline-h3[_ngcontent-awesomeAngularApp-c88]{padding-left:1em}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.outline-h4[_ngcontent-awesomeAngularApp-c88]{padding-left:2em}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.outline-h5[_ngcontent-awesomeAngularApp-c88]{padding-left:2.5em}ul.nav[_ngcontent-awesomeAngularApp-c88] .nav-item[_ngcontent-awesomeAngularApp-c88] .nav-link.outline-h6[_ngcontent-awesomeAngularApp-c88]{padding-left:3em}</style><style>.mat-icon{background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}
</style><style>.doc-info[_ngcontent-awesomeAngularApp-c96]{margin:1rem 0;color:#777}dl[_ngcontent-awesomeAngularApp-c96]{display:inline-flex;margin:0 2rem 0 0}dl[_ngcontent-awesomeAngularApp-c96] > dt[_ngcontent-awesomeAngularApp-c96]{flex:none;font-style:normal}dl[_ngcontent-awesomeAngularApp-c96] > dd[_ngcontent-awesomeAngularApp-c96]{flex:auto;margin-left:0;padding:0}dl[_ngcontent-awesomeAngularApp-c96] > dd[_ngcontent-awesomeAngularApp-c96] > a[_ngcontent-awesomeAngularApp-c96]{margin-right:1rem}</style><style>[_nghost-awesomeAngularApp-c94]{display:block}[_nghost-awesomeAngularApp-c94] h1 .header-link, [_nghost-awesomeAngularApp-c94] h2 .header-link, [_nghost-awesomeAngularApp-c94] h3 .header-link, [_nghost-awesomeAngularApp-c94] h4 .header-link, [_nghost-awesomeAngularApp-c94] h5 .header-link, [_nghost-awesomeAngularApp-c94] h6 .header-link{color:rgba(0,0,0,.54);margin:0 4px;text-decoration:none;user-select:none;visibility:hidden;display:inline-block;vertical-align:text-top}[_nghost-awesomeAngularApp-c94] h1:hover .header-link, [_nghost-awesomeAngularApp-c94] h2:hover .header-link, [_nghost-awesomeAngularApp-c94] h3:hover .header-link, [_nghost-awesomeAngularApp-c94] h4:hover .header-link, [_nghost-awesomeAngularApp-c94] h5:hover .header-link, [_nghost-awesomeAngularApp-c94] h6:hover .header-link{visibility:visible}</style><style>[_nghost-awesomeAngularApp-c95]{display:block}</style></head>
<body>
<app-root _nghost-awesomeangularapp-c18="" ng-version="9.0.0"><router-outlet _ngcontent-awesomeangularapp-c18=""></router-outlet><app-article-layout _nghost-awesomeangularapp-c93="" class="ng-star-inserted"><app-layout-nav _ngcontent-awesomeangularapp-c93="" _nghost-awesomeangularapp-c89=""><mat-toolbar _ngcontent-awesomeangularapp-c89="" color="primary" class="mat-toolbar mat-elevation-z6 header mat-primary mat-toolbar-single-row"><!----><a _ngcontent-awesomeangularapp-c89="" routerlink="/" href="/"><app-icon-angular _ngcontent-awesomeangularapp-c89="" _nghost-awesomeangularapp-c83=""><svg _ngcontent-awesomeAngularApp-c83="" id="Layer_1" width="48" height="48" version="1.1" viewBox="0 0 250 250" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><style _ngcontent-awesomeAngularApp-c83="" type="text/css"> .st0 { fill: #DD0031; } .st1 { fill: #C3002F; } .st2 { fill: #FFFFFF; }
</style><g _ngcontent-awesomeAngularApp-c83=""><polygon _ngcontent-awesomeAngularApp-c83="" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 " class="st0"></polygon><polygon _ngcontent-awesomeAngularApp-c83="" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 " class="st1"></polygon><path _ngcontent-awesomeAngularApp-c83="" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z" class="st2"></path></g></svg></app-icon-angular></a><a _ngcontent-awesomeangularapp-c89="" routerlink="/" class="site-title" href="/"> Angular 资源集锦 </a><div _ngcontent-awesomeangularapp-c89="" class="flex-spacer ng-star-inserted"></div><a _ngcontent-awesomeangularapp-c89="" mat-button="" href="https://github.com/ng-docs/awesome-angular" target="_blank" aria-label="GitHub 仓库" class="mat-button mat-button-base ng-star-inserted" tabindex="0" aria-disabled="false"><span class="mat-button-wrapper"><app-icon-github _ngcontent-awesomeangularapp-c89="" _nghost-awesomeangularapp-c86=""><svg _ngcontent-awesomeAngularApp-c86="" width="26" height="26" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title _ngcontent-awesomeAngularApp-c86=""> github-circle-white-transparent</title><path _ngcontent-awesomeAngularApp-c86="" d="M10 0C4.477 0 0 4.477 0 10c0 4.42 2.87 8.17 6.84 9.5.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34-.46-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.87 1.52 2.34 1.07 2.91.83.09-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.92 0-1.11.38-2 1.03-2.71-.1-.25-.45-1.29.1-2.64 0 0 .84-.27 2.75 1.02.79-.22 1.65-.33 2.5-.33.85 0 1.71.11 2.5.33 1.91-1.29 2.75-1.02 2.75-1.02.55 1.35.2 2.39.1 2.64.65.71 1.03 1.6 1.03 2.71 0 3.82-2.34 4.66-4.57 4.91.36.31.69.92.69 1.85V19c0 .27.16.59.67.5C17.14 18.16 20 14.42 20 10A10 10 0 0 0 10 0z" fill="#FFF" fill-rule="evenodd"></path></svg></app-icon-github></span><div matripple="" class="mat-ripple mat-button-ripple"></div><div class="mat-button-focus-overlay"></div></a><!----><!----></mat-toolbar><mat-sidenav-container _ngcontent-awesomeangularapp-c89="" appoutlinehost="" class="mat-drawer-container mat-sidenav-container sidenav-container"><div class="mat-drawer-backdrop ng-star-inserted"></div><!----><div class="cdk-visually-hidden cdk-focus-trap-anchor" aria-hidden="true"></div><mat-sidenav _ngcontent-awesomeangularapp-c89="" tabindex="-1" class="mat-drawer mat-sidenav sidenav ng-tns-c59-0 ng-trigger ng-trigger-transform mat-drawer-side mat-drawer-opened ng-star-inserted" role="navigation" style="transform: none; visibility: visible;"><div class="mat-drawer-inner-container ng-tns-c59-0"><div _ngcontent-awesomeangularapp-c89="" class="d-sticky ng-tns-c59-0"><app-search-box _ngcontent-awesomeangularapp-c93="" _nghost-awesomeangularapp-c90=""><input _ngcontent-awesomeangularapp-c90="" type="text" placeholder="全站搜索"></app-search-box><mat-nav-list _ngcontent-awesomeangularapp-c93="" role="navigation" class="mat-nav-list mat-list-base"><app-nav-node _ngcontent-awesomeangularapp-c93="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted active" href="/articles/4fddf607_Awesome_Angular_%E6%AC%A2%E8%BF%8E%E6%82%A8" style=""><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="Awesome Angular 欢迎您!"><!----> Awesome Angular 欢迎您! </div></div></a><!----><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="雪狼湖" href="/articles/69f9cc1e_%E6%96%87%E9%9B%86%E6%94%B9%E5%90%8D%E4%B8%BA%E4%B8%93%E6%A0%8F">雪狼湖</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/69f9cc1e_%E6%96%87%E9%9B%86%E6%94%B9%E5%90%8D%E4%B8%BA%E4%B8%93%E6%A0%8F"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="作者寄语"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> 作者寄语 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/3e892ab0_%E5%BE%AE%E5%89%8D%E7%AB%AF%E6%A6%82%E8%BF%B0"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="微前端概述"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">1. </span><!----> 微前端概述 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/23a34d9e_RxJS_%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="RxJS 快速入门"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">2. </span><!----> RxJS 快速入门 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/bdde8563_%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B%E6%8C%87%E5%8D%97"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="技术选型指南"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">3. </span><!----> 技术选型指南 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/37c88f8a_%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E8%A6%81%E6%8E%8C%E6%8F%A1%E7%9A%84%E5%8D%81%E5%85%AB%E6%9D%A1_Docker_%E7%9F%A5%E8%AF%86"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="开发人员要掌握的十八条 Docker 知识"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">4. </span><!----> 开发人员要掌握的十八条 Docker 知识 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/f52d12cb_%E5%9F%BA%E4%BA%8E_Docker_%E7%9A%84%E5%90%8C%E6%9E%84%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="基于 Docker 的同构开发环境"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">5. </span><!----> 基于 Docker 的同构开发环境 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/929165a6_NestJS_%E7%A5%9E%E4%BC%BC_Angular_%E7%9A%84%E5%90%8E%E7%AB%AF%E6%A1%86%E6%9E%B6"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="NestJS,神似 Angular 的后端框架"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">6. </span><!----> NestJS,神似 Angular 的后端框架 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/88e33d45_%E6%9E%B6%E6%9E%84%E6%9D%82%E8%B0%88_737_MAX8_%E5%90%AF%E7%A4%BA%E5%BD%95"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="架构杂谈:737 MAX8 启示录"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">7. </span><!----> 架构杂谈:737 MAX8 启示录 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/1589f5f1_%E5%88%86%E5%BD%A2%E4%B8%8E%E9%80%92%E5%BD%92"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="分形与递归"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">8. </span><!----> 分形与递归 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/3ce9671f_%E6%97%B6%E9%97%B4"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="时间"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">9. </span><!----> 时间 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/f8e12f17_%E6%A8%A1%E5%9E%8B%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="模型驱动开发"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">10. </span><!----> 模型驱动开发 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/5ee67488_%E7%BB%99_Java_%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84_Angular_%E6%95%99%E7%A8%8B_%E7%9B%B4%E6%92%AD%E5%A4%A7%E7%BA%B2_"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="给 Java 程序员的 Angular 教程"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">11. </span><!----> 给 Java 程序员的 Angular 教程 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/8e776b14_%E5%B0%8F%E5%9B%BE%E6%A0%87_%E5%A4%A7%E5%AD%A6%E9%97%AE"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="小图标,大学问"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">12. </span><!----> 小图标,大学问 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/0b824391_%E8%87%AA%E7%94%B1%E4%B8%8E%E8%87%AA%E5%BE%8B"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="自律与自由"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">13. </span><!----> 自律与自由 </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="[译] NgxBlog" href="/articles/22c33ef1_%E6%B7%BB%E5%8A%A0_ngx-blog_%E7%9A%84%E7%AE%80%E4%BB%8B">[译] NgxBlog</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/22c33ef1_%E6%B7%BB%E5%8A%A0_ngx-blog_%E7%9A%84%E7%AE%80%E4%BB%8B"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="专栏简介"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> 专栏简介 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/900f8f1a_Useful__code_extentions_for_Angular_developers"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="对 Angular 开发者有用的 @code 扩展"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">1. </span><!----> 对 Angular 开发者有用的 @code 扩展 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/833b98b3_Dont_get_lost_in_structure"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="不要为项目结构发愁"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">2. </span><!----> 不要为项目结构发愁 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/b56b195b_Translate__i18n__your_Angular_Apps_with__ngx-translate_core"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="使用 @ngx-translate/core 翻译(i18n)你的 Angular 应用"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">3. </span><!----> 使用 @ngx-translate/core 翻译(i18n)你的 Angular 应用 </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="[译] Juristr.com" href="/articles/c1ea1169_Juristr_%E5%8F%8A%E5%85%B6%E5%8D%9A%E5%AE%A2%E7%9A%84%E7%AE%80%E4%BB%8B">[译] Juristr.com</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/c1ea1169_Juristr_%E5%8F%8A%E5%85%B6%E5%8D%9A%E5%AE%A2%E7%9A%84%E7%AE%80%E4%BB%8B"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="专栏简介"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> 专栏简介 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/c26e6a87_RxJS_finalize_operator_to_execute_logic_on_Observable_termination"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="用 RxJS 的 finalize 操作符在 Observable 终止时执行逻辑"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">1. </span><!----> 用 RxJS 的 finalize 操作符在 Observable 终止时执行逻辑 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/032d55b5_Guarantee_Event_Order_with_RxJS"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="用 RxJS 保证事件顺序"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">2. </span><!----> 用 RxJS 保证事件顺序 </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="[译] Shai Reznik" href="/articles/706e2b30_Shai_Reznik_%E4%B8%93%E6%A0%8F">[译] Shai Reznik</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/706e2b30_Shai_Reznik_%E4%B8%93%E6%A0%8F"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="专栏简介"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> 专栏简介 </div></div></a><!----><!----><!----><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/5802651d_Angular_Routing___A_Better_Pattern_For_Large_Scale_Apps"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="Angular Routing - 大规模应用中更好的模式"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">1. </span><!----> Angular Routing - 大规模应用中更好的模式 </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="ng-blog" href="/articles/ng-blog">ng-blog</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/9aff70cc_Angular_9_%E5%8F%91%E5%B8%83"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="Angular 9 现已推出 - Ivy 已抵达!"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> Angular 9 现已推出 - Ivy 已抵达! </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----><div _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted" style=""><mat-list-item _ngcontent-awesomeangularapp-c92="" apptoggle="" class="mat-list-item"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><a _ngcontent-awesomeangularapp-c92="" class="title" title="字幕组" href="/articles/%E5%AD%97%E5%B9%95%E7%BB%84">字幕组</a><!----><mat-icon _ngcontent-awesomeangularapp-c92="" role="img" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" aria-hidden="true">chevron_right</mat-icon><!----></div></mat-list-item><div _ngcontent-awesomeangularapp-c92="" hidden=""><app-nav-node _ngcontent-awesomeangularapp-c92="" _nghost-awesomeangularapp-c92=""><a _ngcontent-awesomeangularapp-c92="" mat-list-item="" routerlinkactive="active" class="mat-list-item ng-star-inserted" href="/articles/f9a88050_%E5%AD%97%E5%B9%95_-_Angular_9_-_What_s_New__What_changed_"><div class="mat-list-item-content"><div mat-ripple="" class="mat-ripple mat-list-item-ripple"></div><div class="mat-list-text"></div><div _ngcontent-awesomeangularapp-c92="" class="title" title="Angular 9 - 新增与改变"><span _ngcontent-awesomeangularapp-c92="" class="ng-star-inserted">0. </span><!----> Angular 9 - 新增与改变 </div></div></a><!----><!----><!----><!----></app-nav-node></div></div><!----><!----><!----></app-nav-node></mat-nav-list></div></div></mat-sidenav><div class="cdk-visually-hidden cdk-focus-trap-anchor" aria-hidden="true"></div><mat-sidenav-content _ngcontent-awesomeangularapp-c89="" class="mat-drawer-content mat-sidenav-content" style="margin-left: 300px;"><main _ngcontent-awesomeangularapp-c89="" appoutlinearea=""><router-outlet _ngcontent-awesomeangularapp-c89=""></router-outlet><app-article-show _nghost-awesomeangularapp-c96="" class="ng-star-inserted"><div _ngcontent-awesomeangularapp-c96="" class="doc-info"><!----><!----><dl _ngcontent-awesomeangularapp-c96=""><dt _ngcontent-awesomeangularapp-c96=""> 作者: </dt><dd _ngcontent-awesomeangularapp-c96=""><a _ngcontent-awesomeangularapp-c96="" href="/authors/%E6%B1%AA%E5%BF%97%E6%88%90">汪志成</a></dd></dl><!----><dl _ngcontent-awesomeangularapp-c96=""><dt _ngcontent-awesomeangularapp-c96="">发表:</dt><dd _ngcontent-awesomeangularapp-c96="">2019年3月5日</dd></dl><dl _ngcontent-awesomeangularapp-c96="" class="ng-star-inserted"><dt _ngcontent-awesomeangularapp-c96="">修改:</dt><dd _ngcontent-awesomeangularapp-c96="">2019年3月7日</dd></dl><!----><!----></div><app-markdown-viewer _ngcontent-awesomeangularapp-c96="" _nghost-awesomeangularapp-c94=""><div _ngcontent-awesomeangularapp-c94=""><h1 id="awesome-angular-欢迎您!">Awesome Angular 欢迎您!<a href="#awesome-angular-欢迎您!" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h1>
<p>欢迎访问 Awesome Angular!</p>
<p>作为发起者,我希望能把它做成 Angular 中文资源的荟萃之地,让它成为对中文官方文档的有益补充。</p>
<h2 id="这里包含什么">这里包含什么<a href="#这里包含什么" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h2>
<p>这里主要包括原创和翻译两种类型。除了单体文章之外,我们还会为不同的作者或团队开设专栏,并且支持发布一些针对特定主题的长篇连载。</p>
<h2 id="授权方式">授权方式<a href="#授权方式" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h2>
<p>除非特别注明,否则这里的所有中文原创和翻译内容都基于 <a href="https://creativecommons.org/licenses/by-nc/4.0/deed.zh">CC BY-NC 4.0(共享、演绎、署名、非商业)</a>协议,如果要商业使用,请联系作者。</p>
<p>翻译文章的原稿均已取得原作者的定向授权,但不包含二次授权许可,因此原稿只限在本站使用,如果你需要在其它网站上使用原稿,请自行联系原作者。</p>
<h2 id="共同参与">共同参与<a href="#共同参与" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h2>
<p>这里是开放之地。</p>
<p>非常欢迎您投稿或进行交叉授权,也欢迎其它形式的合作。</p>
<p>请到 <a href="https://github.com/ng-docs/awesome-angular">https://github.com/ng-docs/awesome-angular</a> 发 Pull Request。</p>
<p>如果在文章中没有特别声明,通过此渠道投稿进来的文章都默认为 <a href="https://creativecommons.org/licenses/by-nc/4.0/deed.zh">CC BY-NC 4.0(共享、演绎、署名、非商业)</a>协议。</p>
<h2 id="投稿指南">投稿指南<a href="#投稿指南" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h2>
<h3 id="工作原理">工作原理<a href="#工作原理" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>本项目会使用 <code>scripts/build.ts</code> 自动采集 <code>src/assets/content/articles</code> 下各个 md 文件的 git 提交记录,以生成 <code>src/app/article/data/articles.json</code> 和 <code>src/app/author/data/authors.json</code>,应用会利用它们来显示导航树和文档。</p>
<h3 id="注册作者">注册作者<a href="#注册作者" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>请参照<a href="https://github.com/ng-docs/awesome-angular/blob/master/src/assets/content/authors/%E6%B1%AA%E5%BF%97%E6%88%90.md">这里</a>填写作者信息。注意,你往【邮箱:】中填写的邮箱必须包括你在 git 提交记录中可能用到的所有邮箱,应用会根据它来反查作者信息。其它部分可随意填写。</p>
<h3 id="添加专栏">添加专栏<a href="#添加专栏" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>在 <code>src/assets/content/articles</code> 下创建目录,目录名可以随意,不过尽量跟专栏名有关,方便查找。</p>
<p>专栏名称取自该目录下一个名叫 <code>_cover.md</code> 的封面文件。专栏在导航中的名称取自封面文件中的第一个一级标题,如 <code># xxx</code>。</p>
<p>此专栏下的第一篇文章永远是栏目介绍。栏目介绍在导航中的名称取自封面文件中的第一个二级标题,如 <code>## xxx</code>。</p>
<h3 id="添加文档">添加文档<a href="#添加文档" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>对于原创类文章,直接在专栏下创建 md 文件即可。文章在导航树中的名称取自该文件中的一级标题。</p>
<p>对于翻译类文章的创建方式类似,但会存在两个一级标题和两个二级标题,前面是英文标题,后面是中文标题。这时候所取的名称都是中文标题。</p>
<h3 id="编辑文档">编辑文档<a href="#编辑文档" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>除了一级标题外,其它内容都和普通的 md 没差别。但翻译类文章有一些需要注意的地方。</p>
<p>翻译类文章请遵循下列格式:</p>
<h4 id="普通段落">普通段落<a href="#普通段落" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h4>
<p>把翻译结果直接追加在原文之后,作为一个新的段落。如:</p>
<pre><code class="language-markdown"><span class="hljs-attribute">Hello</span>
你好
</code></pre>
<h4 id="列表">列表<a href="#列表" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h4>
<p>无论是无序列表和有序列表,都要在添加空行之后先缩进再写翻译结果,如:</p>
<pre><code class="language-markdown">* <span class="hljs-literal">one</span>
一
* <span class="hljs-literal">two</span>
二
* <span class="hljs-literal">two</span>-<span class="hljs-literal">one</span>
二-一
</code></pre>
<h4 id="表格">表格<a href="#表格" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h4>
<p>对于 gfm 格式的表格,请用逐行对照的形式。如:</p>
<pre><code class="language-markdown">|<span class="hljs-string"> Header 1 </span>|<span class="hljs-string"> Header 2</span>|
|<span class="hljs-string">----------</span>|<span class="hljs-string">---------</span>|
|<span class="hljs-string"> 表头 1 </span>|<span class="hljs-string"> 表头 2 </span>|
|<span class="hljs-string"> Body 1 </span>|<span class="hljs-string"> Body 2 </span>|
|<span class="hljs-string"> 表体 1 </span>|<span class="hljs-string"> 表体 2 </span>|</code></pre>
<p>注意,表头的翻译结果必须位于表头分割线的下方。</p>
<h3 id="预览">预览<a href="#预览" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p>用 <code>ng serve</code> 或 <code>npm start</code> 启动开发服务器之后,可以进行预览。预览过程中可以使用 <code>npm run build:docs</code> 命令来自动根据提交记录重建 <code>articles.json</code> 和 <code>authors.json</code> 文件。这些文件重建之后,界面也会跟着刷新。</p>
<h3 id="提交文档">提交文档<a href="#提交文档" title="点击链接到此标题" class="header-link" aria-hidden="true"><i class="material-icons">link</i></a></h3>
<p><strong>注意!不要在一个提交中添加多篇文档,必须逐个添加。</strong></p>
<p>添加文档时使用的 "提交信息" 经过编码后会变成该文件的 ID,这个 ID 会出现在 URL 中,终生不变,它对 SEO 会有一定帮助,因此尽量填写一个足够表意的提交信息。</p>
<p>新增文档之后,要先把它提交才能进行构建,但不要提交空白的文档,否则可能会影响对后续改名操作的正确跟踪。</p>
<p>对文章进行审校时,请认真填写提交信息,这些提交信息将变成该文章的修改记录。</p>
</div></app-markdown-viewer><app-comment-list _ngcontent-awesomeangularapp-c96="" _nghost-awesomeangularapp-c95=""><div class="gt-container"><div class="gt-meta"><span class="gt-counts"><a class="gt-link gt-link-counts" href="null" target="_blank">0</a> comments</span><div class="gt-user"><div class="gt-user-inner"><span class="gt-user-name">Anonymous</span><span class="gt-ico gt-ico-arrdown"><span class="gt-svg"><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" p-id="1619"><path d="M511.872 676.8c-0.003 0-0.006 0-0.008 0-9.137 0-17.379-3.829-23.21-9.97l-251.277-265.614c-5.415-5.72-8.743-13.464-8.744-21.984 0-17.678 14.33-32.008 32.008-32.008 9.157 0 17.416 3.845 23.25 10.009l228.045 241.103 228.224-241.088c5.855-6.165 14.113-10.001 23.266-10.001 8.516 0 16.256 3.32 21.998 8.736 12.784 12.145 13.36 32.434 1.264 45.233l-251.52 265.6c-5.844 6.155-14.086 9.984-23.223 9.984-0.025 0-0.051 0-0.076 0z" p-id="1620"></path></svg></span></span></div></div></div><div class="gt-error">Error: Bad credentials. </div><div class="gt-header"><a class="gt-avatar-github"><span class="gt-ico gt-ico-github"><span class="gt-svg"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M64 524C64 719.602 189.356 885.926 364.113 947.017 387.65799 953 384 936.115 384 924.767L384 847.107C248.118 863.007 242.674 773.052 233.5 758.001 215 726.501 171.5 718.501 184.5 703.501 215.5 687.501 247 707.501 283.5 761.501 309.956 800.642 361.366 794.075 387.658 787.497 393.403 763.997 405.637 743.042 422.353 726.638 281.774 701.609 223 615.67 223 513.5 223 464.053 239.322 418.406 271.465 381.627 251.142 320.928 273.421 269.19 276.337 261.415 334.458 256.131 394.888 302.993 399.549 306.685 432.663 297.835 470.341 293 512.5 293 554.924 293 592.81 297.896 626.075 306.853 637.426 298.219 693.46 258.054 747.5 262.966 750.382 270.652 772.185 321.292 753.058 381.083 785.516 417.956 802 463.809 802 513.5 802 615.874 742.99 701.953 601.803 726.786 625.381 750.003 640 782.295 640 818.008L640 930.653C640.752 939.626 640 948.664978 655.086 948.665 832.344 888.962 960 721.389 960 524 960 276.576 759.424 76 512 76 264.577 76 64 276.576 64 524Z"></path>
</svg>
</span></span></a><div class="gt-header-comment"><textarea class="gt-header-textarea " placeholder="Leave a comment" style="overflow: hidden; overflow-wrap: break-word; resize: none; height: 72px;"></textarea><div class="gt-header-preview markdown-body hide"></div><div class="gt-header-controls"><a class="gt-header-controls-tip" href="https://guides.github.com/features/mastering-markdown/" target="_blank"><span class="gt-ico gt-ico-tip"><span class="gt-svg"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M512 366.949535c-16.065554 0-29.982212 13.405016-29.982212 29.879884l0 359.070251c0 16.167882 13.405016 29.879884 29.982212 29.879884 15.963226 0 29.879884-13.405016 29.879884-29.879884L541.879884 396.829419C541.879884 380.763865 528.474868 366.949535 512 366.949535L512 366.949535z" p-id="3083"></path>
<path d="M482.017788 287.645048c0-7.776956 3.274508-15.553912 8.80024-21.181973 5.525732-5.525732 13.302688-8.80024 21.181973-8.80024 7.776956 0 15.553912 3.274508 21.079644 8.80024 5.525732 5.62806 8.80024 13.405016 8.80024 21.181973 0 7.776956-3.274508 15.656241-8.80024 21.181973-5.525732 5.525732-13.405016 8.697911-21.079644 8.697911-7.879285 0-15.656241-3.274508-21.181973-8.697911C485.292295 303.301289 482.017788 295.524333 482.017788 287.645048L482.017788 287.645048z" p-id="3084"></path>
<path d="M512 946.844409c-239.8577 0-434.895573-195.037873-434.895573-434.895573 0-239.8577 195.037873-434.895573 434.895573-434.895573 239.755371 0 434.895573 195.037873 434.895573 434.895573C946.895573 751.806535 751.755371 946.844409 512 946.844409zM512 126.17088c-212.740682 0-385.880284 173.037274-385.880284 385.777955 0 212.740682 173.037274 385.777955 385.880284 385.777955 212.740682 0 385.777955-173.037274 385.777955-385.777955C897.777955 299.208154 724.740682 126.17088 512 126.17088z" p-id="3085"></path>
</svg>
</span><span class="gt-ico-text">Markdown is supported</span></span></a><button class="gt-btn gt-btn-preview"><span class="gt-btn-text">Preview</span></button><button class="gt-btn gt-btn-login"><span class="gt-btn-text">Login with GitHub</span></button></div></div></div><div class="gt-comments"><div style="position: relative;"></div><p class="gt-comments-null">Be the first person to leave a comment!</p></div></div></app-comment-list></app-article-show><!----></main><app-outline _ngcontent-awesomeangularapp-c89="" class="d-sticky ng-star-inserted" _nghost-awesomeangularapp-c88=""><ul _ngcontent-awesomeangularapp-c88="" class="nav"><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted active"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h1 active" title="Awesome Angular 欢迎您!">Awesome Angular 欢迎您!</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h2" title="这里包含什么">这里包含什么</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h2" title="授权方式">授权方式</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h2" title="共同参与">共同参与</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h2" title="投稿指南">投稿指南</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="工作原理">工作原理</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="注册作者">注册作者</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="添加专栏">添加专栏</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="添加文档">添加文档</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="编辑文档">编辑文档</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h4" title="普通段落">普通段落</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h4" title="列表">列表</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h4" title="表格">表格</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="预览">预览</a></li><li _ngcontent-awesomeangularapp-c88="" class="nav-item ng-star-inserted"><a _ngcontent-awesomeangularapp-c88="" href="javascript:void(0)" class="nav-link outline-h3" title="提交文档">提交文档</a></li><!----></ul></app-outline><!----></mat-sidenav-content><!----></mat-sidenav-container></app-layout-nav></app-article-layout><!----></app-root>
<script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script src="/assets/js/translator.js" async=""></script>
<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-159351998-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-159351998-1');
</script>
<script src="runtime.689ba4fd6cadb82c1ac2.js" defer=""></script><script src="polyfills.80bd341d56a2f827dd16.js" defer=""></script><script src="main.64bf54c5f6c0dd73f115.js" defer=""></script>
</body></html>