Angular 2
고급 구성 요소 예제
수색…
비고
각도 2는 모두 유일한 책임이라는 것을 기억하십시오. 귀하의 구성 요소가 아무리 작아도 각 구성 요소마다 별도의 논리를 부여하십시오. 단추, 고급 앵커 링크, 대화 상자 머리글 또는 sidenav의 하위 항목이 될 수 있습니다.
미리보기가있는 이미지 선택 도구
이 예에서는 업로드하기 전에 사진을 미리 보는 이미지 선택 도구를 만듭니다. 프리 뷰어는 파일을 입력으로 드래그 앤 드롭하는 기능도 지원합니다. 이 예제에서는 단일 파일 업로드 만 다루 겠지만 다중 파일 업로드 작업을하기 위해 조금만 고칠 수는 있습니다.
image-preview.html
이것은 이미지 미리보기의 html 레이아웃입니다.
<!-- Icon as placeholder when no file picked --> <i class="material-icons">cloud_upload</i> <!-- file input, accepts images only. Detect when file has been picked/changed with Angular's native (change) event listener --> <input type="file" accept="image/*" (change)="updateSource($event)"> <!-- img placeholder when a file has been picked. shows only when 'source' is not empty --> <img *ngIf="source" [src]="source" src="">
이미지 미리보기 .ts
이것은 <image-preview>
구성 요소의 주 파일입니다.
import { Component, Output, EventEmitter, } from '@angular/core'; @Component({ selector: 'image-preview', styleUrls: [ './image-preview.css' ], templateUrl: './image-preview.html' }) export class MtImagePreviewComponent { // Emit an event when a file has been picked. Here we return the file itself @Output() onChange: EventEmitter<File> = new EventEmitter<File>(); constructor() {} // If the input has changed(file picked) we project the file into the img previewer updateSource($event: Event) { // We access he file with $event.target['files'][0] this.projectImage($event.target['files'][0]); } // Uses FileReader to read the file from the input source:string = ''; projectImage(file: File) { let reader = new FileReader; // TODO: Define type of 'e' reader.onload = (e: any) => { // Simply set e.target.result as our <img> src in the layout this.source = e.target.result; this.onChange.emit(file); }; // This will process our file and get it's attributes/data reader.readAsDataURL(file); } }
another.component.html
<form (ngSubmit)="submitPhoto()"> <image-preview (onChange)="getFile($event)"></image-preview> <button type="submit">Upload</button> </form>
그리고 그게 다야. AngularJS 1.x보다 훨씬 쉬운 방법입니다. AngularJS 1.5.5에서 만든 이전 버전을 기반으로이 구성 요소를 만들었습니다.
입력으로 표 값 필터링
ReactiveFormsModule
을 가져온 다음
import { Component, OnInit, OnDestroy } from '@angular/core';
import { FormControl } from '@angular/forms';
import { Subscription } from 'rxjs';
@Component({
selector: 'component',
template: `
<input [formControl]="control" />
<div *ngFor="let item of content">
{{item.id}} - {{item.name}}
</div>
`
})
export class MyComponent implements OnInit, OnDestroy {
public control = new FormControl('');
public content: { id: number; name: string; }[];
private originalContent = [
{ id: 1, name: 'abc' },
{ id: 2, name: 'abce' },
{ id: 3, name: 'ced' }
];
private subscription: Subscription;
public ngOnInit() {
this.subscription = this.control.valueChanges.subscribe(value => {
this.content = this.originalContent.filter(item => item.name.startsWith(value));
});
}
public ngOnDestroy() {
this.subscription.unsubscribe();
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow