【Angular】 화상을 읽어서 표시한다

8756 단어 Angular
파일을 선택하여 이미지 미리보기를 표시하는 샘플


간단하게 입력 버튼


<!-- html -->
<div class="upload">
    <input type="file" accept="image/*" 
           (change)="onChangeFileInput($event)">
    <img [src]="imgSrc" alt="">
</div>
import { Component, OnInit } from '@angular/core';

export class ImageUploadComponent implements OnInit {

  file: File = null;
  imgSrc: string | ArrayBuffer = "";

  constructor() { }

  ngOnInit() {}

  onChangeFileInput(event) {

    //fileが選択されていなければリセット
    if (event.target.files.length === 0) {
      this.file = null;
      this.imgSrc = "";
      return;
    }

    //ファイルの情報をfileとimgSrcに保存
    let reader = new FileReader();
    this.file = event.target.files[0];
    reader.onload = () => {
      this.imgSrc = reader.result;
    }
    reader.readAsDataURL(this.file);
  }
}

FileReader 정보 ... MDN web docs

입력 버튼 이외를 클릭하여 선택 창을 표시하고 싶을 때




Adiv나 이미지라든지, input 이외의 요소를 클릭해 윈도우 표시시키고 싶을 때
<div class="upload">
    <input 
      type="file"
      style="display: none;" <-追加
      #fileInput  <-追加
      accept="image/*"
      (change)="onChangeFileInput($event)"
    >
    <div class="div-upload" (click)="onClickFileInputButton()">アップロード</div> <-追加
    <img [src]="imgSrc" alt="">
</div>
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';

export class ImageUploadComponent implements OnInit {

  @ViewChild("fileInput", { static: false }) fileInput: ElementRef; //追加
  file: File = null;
  imgSrc: string | ArrayBuffer = "";

  constructor() { }

  ngOnInit() {}

  onClickFileInputButton(): void { //追加
    this.fileInput.nativeElement.click();
  }

  onChangeFileInput(event) {
    //--- 変更なし ---
  }
}

ViewChild 소개 ... 【Angular】@ViewChild / @ViewChildren 을 이해한다【v6.x】
input은 숨기면서, ViewChild를 사용 ts측으로부터 input의 조작을 할 수 있도록(듯이) 합니다.
버튼으로 하고 싶은 요소를 클릭했을 때, input에 대해서 click()를 작동시켜 주는 것으로 선택 윈도우를 열 수가 있습니다.

좋은 웹페이지 즐겨찾기