Advertisement
nikolayneykov

Untitled

Nov 27th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Component, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
  2. import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
  3. import { FormGroup, FormBuilder, Validators } from '@angular/forms';
  4. import { Router } from '@angular/router';
  5.  
  6. @Component({
  7.   selector: 'app-post-create',
  8.   templateUrl: './post-create.component.html',
  9.   styleUrls: ['./post-create.component.scss']
  10. })
  11. export class PostCreateComponent {
  12.   @Output() postCreate: EventEmitter<FormData> = new EventEmitter<FormData>();
  13.  
  14.   createPostForm: FormGroup;
  15.   photo: any;
  16.   photoUrl: any;
  17.  
  18.   constructor(
  19.     public activeModal: NgbActiveModal,
  20.     private readonly fb: FormBuilder,
  21.     private cd: ChangeDetectorRef,
  22.   ) {
  23.     this.buildForm();
  24.   }
  25.  
  26.   createPost(): void {
  27.     const formData: FormData = new FormData();
  28.     formData.append('title', this.createPostForm.get('title').value);
  29.     formData.append('description', this.createPostForm.get('description').value);
  30.     formData.append('status', this.createPostForm.get('status').value);
  31.     formData.append('photo', this.photo);
  32.  
  33.     this.postCreate.emit(formData);
  34.   }
  35.  
  36.   onPhotoChange(event: any): void {
  37.     const file = event.target.files[0];
  38.  
  39.     if (!file || !(/image\/(gif|jpg|jpeg|png)$/i).test(file.type)) {
  40.       return;
  41.     }
  42.  
  43.     this.photo = file;
  44.     const reader = new FileReader();
  45.  
  46.     reader.readAsDataURL(file);
  47.  
  48.     reader.onload = () => {
  49.       this.photoUrl = reader.result;
  50.     };
  51.   }
  52.  
  53.   private buildForm(): void {
  54.     this.createPostForm = this.fb.group({
  55.       title: ['', Validators.compose([
  56.         Validators.required,
  57.       ])],
  58.       description: ['', Validators.compose([
  59.         Validators.required,
  60.       ])],
  61.       status: ['public', Validators.compose([
  62.         Validators.required,
  63.       ])],
  64.     },
  65.     );
  66.   }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement