마저 작성한다
첫번째 등록버튼을 클릭할때 위의 메뉴가 나오게 하고싶다
두번째 수집기간을 달력버튼이 말고 텍스트박스를 클릭할때 달력을 표시하게해주고싶다
세번째 수집된내용을 DB 에 저장시키고 목록을 그리드에 바인딩시켜준다
네번째 바인딩된 그리드 클릭후 엑셀출력 버튼을 클릭하면 수집된내용을 엑셀로 출력시켜준다
#첫번째
collect.component.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 | <div class="row"> <div class="large-6 columns"> <button (click)="changeState('add')" class="btn btn-primary">신규등록</button> </div> </div> <p></p> <div *ngIf="appState == 'add'" class="row"> <form class="form-horizontal" [formGroup]="VailidateForm" (submit)="addinfo( email.value, name.value, hashtag.value, frcal.value, tocal.value, twitter.value )"> <fieldset> <legend>신규 등록</legend> <div class="form-group" > <label for="inputEmail" class="col-md-1 control-label">이메일</label> <div class="col-md-5" [ngClass]="{'has-error':!VailidateForm.controls['email'].valid && VailidateForm.controls['email'].touched}"> <input type="text" class="form-control" placeholder="@naver.com" #email [formControl]="VailidateForm.controls['email']" > <div *ngIf="VailidateForm.controls['email'].hasError('required') && VailidateForm.controls['email'].touched" class="alert alert-danger">이메일을 입력해주세요</div> </div> </div> <div class="form-group"> <div class="col-md-1"> <input type="submit" class="btn btn-primary" value="등록" [disabled]="!VailidateForm.valid"> </div> <div class="col-md-1"> <button class="btn btn-primary" (click) ="changeState('appState','default')" > 취소 </button> </div> </div> </fieldset> </form> </div> <div style="width: 100%;"> <ag-grid-ng2 #agGrid style="width: 100%; height: 200px;" class="ag-fresh" [gridOptions]="gridOptions" (rowClicked)='onRowClicked($event)' > </ag-grid-ng2> </div> | cs |
collect.component.ts
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 | import { Component,Input,OnInit,Injectable,OnDestroy,ViewChild } from '@angular/core'; import {Collect} from '../collect'; import {GridOptions} from 'ag-grid/main'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; declare var $:any; @Component({ moduleId:module.id, selector: 'collect', templateUrl: 'collect.component.html', styleUrls: ['collect.component.css'] }) @Injectable() export class CollectComponent implements OnInit{ VailidateForm : FormGroup; constructor(private http:Http,fb: FormBuilder){ this.VailidateForm = fb.group({ 'email' : [null, Validators.required], 'id' : [null, Validators.required], 'hashtag' : [null , Validators.required], 'date' : [null , Validators.required] }) console.log(this.VailidateForm); this.VailidateForm.valueChanges.subscribe( (form: any) => { console.log('form changed to:', form); } ); | cs |
위 화면을 작성한 코드 예제이다
돌아가는 사이클은 신규등록을 클릭할시 밑에 form 들을 보여주게한다
위 코드에서 눈여겨 볼만한것은 *ngIf , [ngClass] ,[formControl] 이다
1.*ngIf
1 2 3 4 5 6 7 | <div *ngIf="appState == 'add'" class="row"> <!-- 변수의 값이 appState와 일치할 때 이 태그가보여진다 .--> </div> | cs |
2~3.[ngClass],[formControl]
1 2 3 4 5 | [ngClass]="{'has-error':!VailidateForm.controls['email'].valid && VailidateForm.controls['email'].touched}" //email 폼 값이 비어있거나 클릭이 되었을경우 발생한다 [formControl]="VailidateForm.controls['email']" //form컨트롤값 지정 | cs |
collect.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 | constructor(private http:Http,fb: FormBuilder){ this.VailidateForm = fb.group({ 'email' : [null, Validators.required], 'id' : [null, Validators.required], 'hashtag' : [null , Validators.required], 'date' : [null , Validators.required] }) console.log(this.VailidateForm); this.VailidateForm.valueChanges.subscribe( (form: any) => { console.log('form changed to:', form); } | cs |
코드를 살펴보자 vaildateForm 값을 넣어주고
vaildateform 값이 변할때마다 log 를 찍어주도록하였다
코드를 실행해보면
이러한 화면을 간단하게 만들어보았다
'MEAN stack > SNS Crawler App' 카테고리의 다른 글
CasperJs :: 자주 사용되는 함수 (0) | 2016.12.07 |
---|---|
인스타그램,트위터 크롤러 :: 4 Nschedule (8) | 2016.12.01 |
인스타그램,트위터 크롤러 :: 3 Nodejs (0) | 2016.12.01 |
인스타그램,트위터 크롤러 :: 1 MEAN stack (0) | 2016.11.29 |
인스타그램,트위터 크롤러 :: 0 시작 (0) | 2016.11.27 |
WRITTEN BY