# Conflicts: # .nvmrc # aio/content/cli/index.md # aio/content/guide/ajs-quick-reference.md # aio/content/guide/animations.md # aio/content/guide/aot-compiler.md # aio/content/guide/app-shell.md # aio/content/guide/architecture-components.md # aio/content/guide/architecture-modules.md # aio/content/guide/architecture-services.md # aio/content/guide/architecture.md # aio/content/guide/attribute-directives.md # aio/content/guide/bazel.md # aio/content/guide/bootstrapping.md # aio/content/guide/browser-support.md # aio/content/guide/build.md # aio/content/guide/cheatsheet.md # aio/content/guide/cli-builder.md # aio/content/guide/comparing-observables.md # aio/content/guide/complex-animation-sequences.md # aio/content/guide/component-interaction.md # aio/content/guide/component-styles.md # aio/content/guide/creating-libraries.md # aio/content/guide/dependency-injection-in-action.md # aio/content/guide/dependency-injection-navtree.md # aio/content/guide/dependency-injection-providers.md # aio/content/guide/dependency-injection.md # aio/content/guide/deployment.md # aio/content/guide/deprecations.md # aio/content/guide/displaying-data.md # aio/content/guide/dynamic-component-loader.md # aio/content/guide/dynamic-form.md # aio/content/guide/elements.md # aio/content/guide/entry-components.md # aio/content/guide/feature-modules.md # aio/content/guide/file-structure.md # aio/content/guide/form-validation.md # aio/content/guide/forms-overview.md # aio/content/guide/forms.md # aio/content/guide/frequent-ngmodules.md # aio/content/guide/glossary.md # aio/content/guide/hierarchical-dependency-injection.md # aio/content/guide/http.md # aio/content/guide/i18n.md # aio/content/guide/ivy.md # aio/content/guide/language-service.md # aio/content/guide/lazy-loading-ngmodules.md # aio/content/guide/lifecycle-hooks.md # aio/content/guide/module-types.md # aio/content/guide/ngmodule-api.md # aio/content/guide/ngmodule-faq.md # aio/content/guide/ngmodule-vs-jsmodule.md # aio/content/guide/ngmodules.md # aio/content/guide/npm-packages.md # aio/content/guide/observables-in-angular.md # aio/content/guide/observables.md # aio/content/guide/pipes.md # aio/content/guide/providers.md # aio/content/guide/reactive-forms.md # aio/content/guide/releases.md # aio/content/guide/reusable-animations.md # aio/content/guide/route-animations.md # aio/content/guide/router.md # aio/content/guide/rx-library.md # aio/content/guide/schematics-authoring.md # aio/content/guide/schematics-for-libraries.md # aio/content/guide/schematics.md # aio/content/guide/security.md # aio/content/guide/service-worker-communications.md # aio/content/guide/service-worker-config.md # aio/content/guide/service-worker-devops.md # aio/content/guide/service-worker-getting-started.md # aio/content/guide/service-worker-intro.md # aio/content/guide/set-document-title.md # aio/content/guide/setup-local.md # aio/content/guide/sharing-ngmodules.md # aio/content/guide/singleton-services.md # aio/content/guide/static-query-migration.md # aio/content/guide/structural-directives.md # aio/content/guide/styleguide.md # aio/content/guide/template-syntax.md # aio/content/guide/testing.md # aio/content/guide/transition-and-triggers.md # aio/content/guide/typescript-configuration.md # aio/content/guide/universal.md # aio/content/guide/updating.md # aio/content/guide/upgrade-setup.md # aio/content/guide/upgrade.md # aio/content/guide/user-input.md # aio/content/guide/using-libraries.md # aio/content/guide/visual-studio-2015.md # aio/content/guide/web-worker.md # aio/content/guide/workspace-config.md # aio/content/marketing/events.html # aio/content/marketing/resources.json # aio/content/navigation.json # aio/content/start/data.md # aio/content/start/deployment.md # aio/content/start/forms.md # aio/content/start/index.md # aio/content/start/routing.md # aio/content/tutorial/index.md # aio/content/tutorial/toh-pt0.md # aio/content/tutorial/toh-pt1.md # aio/content/tutorial/toh-pt2.md # aio/content/tutorial/toh-pt3.md # aio/content/tutorial/toh-pt4.md # aio/content/tutorial/toh-pt5.md # aio/content/tutorial/toh-pt6.md # aio/package.json # aio/src/app/app.component.spec.ts # aio/src/app/custom-elements/api/api-list.component.html # aio/src/app/layout/doc-viewer/doc-viewer.component.ts # aio/src/app/layout/mode-banner/mode-banner.component.ts # aio/src/app/layout/nav-item/nav-item.component.html # aio/src/app/shared/toc.service.ts # aio/src/styles/0-base/_typography.scss # aio/src/styles/2-modules/_api-pages.scss # aio/tools/transforms/templates/api/lib/memberHelpers.html # aio/yarn.lock # packages/common/http/src/headers.ts # packages/common/http/src/interceptor.ts # packages/common/http/src/params.ts # packages/common/http/src/response.ts # packages/common/src/common_module.ts # packages/common/src/directives/ng_for_of.ts # packages/common/src/location/location.ts # packages/common/src/pipes/date_pipe.ts # packages/core/src/change_detection/pipe_transform.ts # packages/core/src/di/injectable.ts # packages/core/src/metadata/di.ts # packages/core/src/metadata/directives.ts # packages/core/src/metadata/ng_module.ts # packages/core/src/render3/component_ref.ts # packages/forms/src/directives/reactive_directives/form_control_name.ts # packages/forms/src/form_builder.ts # packages/forms/src/model.ts # packages/forms/src/validators.ts # packages/router/src/config.ts # packages/router/src/directives/router_outlet.ts # packages/router/src/events.ts # packages/router/src/router.ts # packages/router/src/router_module.ts # packages/router/src/router_state.ts # packages/router/src/shared.ts
90 lines
2.6 KiB
Markdown
90 lines
2.6 KiB
Markdown
# Elements
|
||
|
||
# 自定义元素(Elements)
|
||
|
||
## Release Status
|
||
|
||
## 发布状态
|
||
|
||
**Angular Labs Project** - experimental and unstable. **Breaking Changes Possible**
|
||
|
||
**Angular 实验室项目** - 试验性的、非稳定的。**可能会发生重大变更**
|
||
|
||
Targeted to land in the [6.x release cycle](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md) of Angular - subject to change
|
||
|
||
预计会包含在 Angular 的 [6.x 发布周期内](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md) —— 也可能会改。
|
||
|
||
## Overview
|
||
|
||
## 概览
|
||
|
||
Elements provides an API that allows developers to register Angular Components as Custom Elements
|
||
("Web Components"), and bridges the built-in DOM API to Angular's component interface and change
|
||
detection APIs.
|
||
|
||
Angular 元素提供了一种 API,它允许开发者把 Angular 组件注册为自定义元素(Web Components),并且在内置的 DOM API 和 Angular 的组件接口与变更检测 API 之间建立一个桥梁。
|
||
|
||
```ts
|
||
|
||
//hello-world.ts
|
||
import { Component, Input, NgModule } from '@angular/core';
|
||
|
||
@Component({
|
||
selector: 'hello-world',
|
||
template: `<h1>Hello {{name}}</h1>`
|
||
})
|
||
export class HelloWorld {
|
||
@Input() name: string = 'World!';
|
||
}
|
||
|
||
@NgModule({
|
||
declarations: [ HelloWorld ],
|
||
entryComponents: [ HelloWorld ]
|
||
})
|
||
export class HelloWorldModule {}
|
||
|
||
```
|
||
|
||
```ts
|
||
|
||
//app.component.ts
|
||
import { Component, NgModuleRef } from '@angular/core';
|
||
import { createNgElementConstructor } from '@angular/elements';
|
||
|
||
import { HelloWorld } from './hello-world';
|
||
|
||
@Component({
|
||
selector: 'app-root',
|
||
templateUrl: './app.component.html',
|
||
styleUrls: ['./app.component.css']
|
||
})
|
||
export class AppComponent {
|
||
constructor(injector: Injector) {
|
||
const NgElementConstructor = createNgElementConstructor(HelloWorld, {injector});
|
||
customElements.register('hello-world', NgElementConstructor);
|
||
}
|
||
}
|
||
|
||
```
|
||
|
||
Once registered, these components can be used just like built-in HTML elements, because they *are*
|
||
HTML Elements!
|
||
|
||
一旦注册,这些组件就可以像内置的 HTML 元素一样使用了,因为它们**就是** HTML 元素!
|
||
|
||
They can be used in any HTML page:
|
||
|
||
它们可以用在任何 HTML 页面中:
|
||
|
||
```html
|
||
|
||
<hello-world name="Angular"></hello-world>
|
||
<hello-world name="Typescript"></hello-world>
|
||
|
||
```
|
||
|
||
Custom Elements are "self-bootstrapping" - they are automatically started when they are added to the
|
||
DOM, and automatically destroyed when removed from the DOM.
|
||
|
||
这些自定义元素是"自举"的 —— 当把它们添加到 DOM 中时,它们会自动启动;当从 DOM 中移除时,也会自动销毁。
|