<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.garamx.com/dokuwiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.garamx.com/dokuwiki/feed.php">
        <title>GaramX angular</title>
        <description></description>
        <link>https://www.garamx.com/dokuwiki/</link>
        <image rdf:resource="https://www.garamx.com/dokuwiki/lib/tpl/darkblue/images/favicon.ico" />
       <dc:date>2026-05-06T13:38:39+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli-matarial&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular6&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:binding&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:class-binding&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:component-interaction&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:component&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:dependency-injection&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:directive&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:download&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:event-binding&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:form_array&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:forms&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:hangul&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:home&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:http-observables&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:httpclient&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:interpolation&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:localstorage&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:login&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:mat-icon&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:material&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:ng-template-ng-container&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngfor&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngif&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngmodulefaq&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngswitch&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:observable_rxjs&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:pipe&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:property-binding&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:reactive-forms&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:routing&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:service&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:style-binding&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:template-reference-variables&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:testing&amp;rev=1744711518&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.garamx.com/dokuwiki/doku.php?id=angular:two-way-binding&amp;rev=1744711518&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.garamx.com/dokuwiki/lib/tpl/darkblue/images/favicon.ico">
        <title>GaramX</title>
        <link>https://www.garamx.com/dokuwiki/</link>
        <url>https://www.garamx.com/dokuwiki/lib/tpl/darkblue/images/favicon.ico</url>
    </image>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli-matarial&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:angular-cli-matarial</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli-matarial&amp;rev=1744711518&amp;do=diff</link>
        <description>CLI + Material starter template

Datatable

ng generate @angular/meterial:material-table --name=my-table</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:angular-cli</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:angular-cli&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular CLI

Angular CLI기반으로 angular이용을 효율적으로 할 수 있다.

Package의 추가 및 업데이트

ng update &lt;package&gt;

	*  analyses your package.json
	*  recommend updates to your application
	*  3rd parties can provide update scripts using schematis</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:angular6&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:angular6</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:angular6&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular 6

Registering providers

Before


import { EmployeeService } from &#039;./employee.service&#039;;



providers : [EmployeeService],


Now


@Injectable({
  providedIn: &#039;root&#039;,
  })
export class EmployeeService{


ngModelChange

Before


&lt;input [(ngMedel)]=&quot;name&quot; (ngModelChange)=&quot;onChange($event)&quot;&gt;


onChange(value) {
  console.log(value); // would log updated value
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:binding&amp;rev=1744711518&amp;do=diff</link>
        <description>바인딩

[Data Binding]

Interpolation(보간법)


template: `
  &lt;h2&gt;{{ title }}&lt;/h2&gt;
`


단방향 바인딩


&lt;h1 [innerText]=&quot;car.name&quot;&gt;&lt;/h1&gt;
&lt;div [style.color]=&quot;color&quot;&gt;{{ title }} &lt;/div&gt;


	*  [attr.aria-label]
		*  특성 바인딩
		*  알려진 속성이 아닌 경우에는 이 방식을 사용</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:class-binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:class-binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:class-binding&amp;rev=1744711518&amp;do=diff</link>
        <description>import { Component, OnInit } from &#039;@angular/core&#039;;

@Component({
  selector: &#039;app-test-pb&#039;,
  template: `
    &lt;h2&gt;
      Welcome {{name}}
    &lt;/h2&gt;
    &lt;h2 class=&quot;text-success&quot;&gt;Codevolution&lt;/h2&gt;
    &lt;h2 [class]=&quot;successClass&quot;&gt;Codevolution&lt;/h2&gt;

    &lt;h2 class=&quot;text-success&quot; [class]=&quot;successClass&quot;&gt;Codevolution&lt;/h2&gt;
    &lt;h2 [class.text-danger]=&quot;hasError&quot;&gt;Codevolution&lt;/h2&gt;


    &lt;h2 [ngClass]=&quot;messageClasses&quot;&gt;Codevolution&lt;/h2&gt;

  `,
  styles: [`
    .text-success {
      color: green;
    }
    .tex…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:component-interaction&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:component-interaction</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:component-interaction&amp;rev=1744711518&amp;do=diff</link>
        <description>Component Interaction

From the parent component To the child component

1.Parent Component


&lt;app-test-component-interaction [parentData]=&quot;name&quot;&gt;&lt;/app-test-component-interaction&gt;


2.Child Component


export class TestComponentInteractionComponent implements OnInit {
  //@Input() public parentData;
  @Input(&#039;parentData&#039;) public name;
  constructor() { }
  ngOnInit() {
  }
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:component&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:component</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:component&amp;rev=1744711518&amp;do=diff</link>
        <description>Component

Angular에서 UI를 표현하기 위해서 사용한다.

	*  Communication

angular CLI

 ng generate component &lt;component name&gt; [option]
 ng g component &lt;component name&gt; [option]
ng g c &lt;component name&gt; [option]

Angular.Io참조

Component Annotation

Angular에게 Component를 알려주는 Annotation은 @Component라는 Annotation을 사용한다.
-sample</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:dependency-injection&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:dependency-injection</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:dependency-injection&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular의 의존성 주입

의존성 주입(Dependency injection, DI)은 애플리케이션 디자인 패턴 중에서도 아주 중요한 패턴입니다. Angular는 독자적인 의존성 주입 시스템을 제공하고 있기 때문에, 이 패턴을 활용하면 Angular 애플리케이션을 좀 더 효율적인 모듈 형태로 구성할 수 있습니다.</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:directive&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:directive</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:directive&amp;rev=1744711518&amp;do=diff</link>
        <description>Directive


@Directive({
  selector: &quot;[app-key-press]&quot;
})
export class KeyupDirective {
  @HostListener(&quot;keyup&quot;, [&quot;$event&quot;]) onKeyUp(event: KeyboardEvent) {
    console.log(event);
  }
}


Test


describe(&#039;ComponentDirective&#039;, () =&gt; {
  // let component: MaroBaseComponent;
  let fixture : ComponentFixture&lt;MaroDialogComponent&gt;;
  it(&#039;should create an instance&#039;, () =&gt; {
    const directive = fixture.componentInstance.gdComponent;
    expect(directive).toBeTruthy();
  });
});</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:download&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:download</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:download&amp;rev=1744711518&amp;do=diff</link>
        <description>Download File


import rxjs/Rx;

details = {id: 75,name: &quot;some name&quot;}

this.nameService.getData(this.details).subscribe(response =&gt; {
this.downloadFile(response);
})

downloadFile(data: Response) {
	let blob = new Blob([data]); 
	let link = document.createElement(&#039;a&#039;); 
	link.href = window.URL.createObjectURL(blob); 
	link.download = evt.filename; 
	link.click(); 
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:event-binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:event-binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:event-binding&amp;rev=1744711518&amp;do=diff</link>
        <description>Event Binding


import { Component, OnInit } from &#039;@angular/core&#039;;

@Component({
  selector: &#039;app-test-eb&#039;,
  template: `
  &lt;h2&gt;
    Welcome {{ name }}
  &lt;/h2&gt;
  &lt;button (click)=&quot;onClick($event)&quot;&gt;Greet&lt;/button&gt;
  &lt;button (click)=&quot;greeting=&#039;Welcome Code&#039;&quot;&gt;Greet&lt;/button&gt;

  {{ greeting }}
  `,
  styleUrls: [&#039;./test-eb.component.css&#039;]
})
export class TestEbComponent implements OnInit {
  name = &quot;Codevolution&quot;;
  greeting = &quot;&quot;;
  constructor() { }

  ngOnInit() {
  }

  onClick(event){
    console.l…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:form_array&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:form_array</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:form_array&amp;rev=1744711518&amp;do=diff</link>
        <description>FormArray

FormArray와 FormGroup</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:forms&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:forms</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:forms&amp;rev=1744711518&amp;do=diff</link>
        <description>Forms

Vital to business applications
Create an experience that guides the user e1fficiently and effectively through the workflow.
Developers

	*  Data binding
	*  Change tracking
	*  Validation
	*  Visual feedback
	*  Error messages
	*  Form submission</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:hangul&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:hangul</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:hangul&amp;rev=1744711518&amp;do=diff</link>
        <description>한글

한글입력문제

&lt;http://devstory.ibksplatform.com/2017/07/angular2.html&gt;

app.module.ts에 COMPOSITION_BUFFER_MODE를 추가


  providers: [
    {
      provide: COMPOSITION_BUFFER_MODE,
      useValue: false
    }
  ],
 

&lt;https://angular.io/api/forms/COMPOSITION_BUFFER_MODE&gt;</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:home&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:home</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:home&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular

	*  Angular

	*  Study
	*  Study Angular
	*  Angular Material
	*  Angular Testing
	*  Angular Login
	*  Observable &amp; RxJs
	*  Angular HttpClient
	*  FormArray
	*  ng-template와 ng-container
	*  Angular Local Storage

	*  Angular CLI
	*  iframe 사용 - pipe로 검증해야함

	*  Directive
	*  Mat-Icon
	*  Download

주의할것들

HTML5에 제공되는 property, attribute하고 Angular에서 사용하는 property하고 충돌이 나올 수 있다. 두가지 모두를 만족하지는 않는다.…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:http-observables&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:http-observables</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:http-observables&amp;rev=1744711518&amp;do=diff</link>
        <description>HTTP and Observables

Observables

A sequence of items that arrive asynchronously over time.
HTTP call - single item
Single item - HTTP response

HTTP, Observables and RxJS

	*  HTTP Get request from EmpService
	*  Receive the observable and cast it into an employee array</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:httpclient&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:httpclient</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:httpclient&amp;rev=1744711518&amp;do=diff</link>
        <description>HttpClient

관련 POST

	*  현창현 POST

대부분의 프런트 엔드 응용 프로그램은 HTTP 프로토콜을 통해 백엔드 서비스와 통신합니다. 최신 브라우저는 HTTP 요청을하기 위해 XMLHttpRequest 인터페이스와 fetch() API의 두 가지 API를 지원합니다.</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:interpolation&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:interpolation</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:interpolation&amp;rev=1744711518&amp;do=diff</link>
        <description>Interpolation(보간법)

보간법이라고 해석하고들 있습니다.


    &lt;h2&gt;
      {{ title }}
    &lt;/h2&gt;
    &lt;h2&gt;
      {{ 2 + 2 }}
    &lt;/h2&gt;
    &lt;h2&gt;
      {{ &quot;Welcome &quot; + title }}
    &lt;/h2&gt;
    &lt;h2&gt;
      {{ title.length }}
    &lt;/h2&gt;
    &lt;h2&gt;
      {{ title.toUpperCase() }}
    &lt;/h2&gt;
    &lt;h2&gt;
      {{ greetUser() }}
    &lt;/h2&gt;</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:localstorage&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:localstorage</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:localstorage&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular Local Storage

 보관함은 나중에 사용할 수 있도록 물건을 보관하는 공간입니다.
 웹 애플리케이션 관점에서 스토리지는 크게 서버 측 스토리지 와 클라이언트 측 스토리지의 두 가지 유형으로 분류될 수 있습니다 .
 서버측 스토리지란 SQL, MYSQL, MongoDB 등과 같은 다양한 유형의 데이터베이스 스토리지를 의미합니다.
 클라이언트측 스토리지는 서버측 데이터베이스를 요청하지 않고도 필요할 때 사용할 수 있도록 브라우저 자체에 데이터를 저장하는 것을 의미합니다.…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:login&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:login</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:login&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular Login

JWT[JSON Web Tokens]</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:mat-icon&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:mat-icon</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:mat-icon&amp;rev=1744711518&amp;do=diff</link>
        <description>Material Icon

mat-icon list


  &lt;mat-icon&gt;clear&lt;/mat-icon&gt;</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:material&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:material</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:material&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular Material

	*  mat-icon List

ng CLI 사용

Angular Project에 Angular Material을 추가 설치하려면


npm install --save @angular/material @angular/cdk @angular/animations
또는
ng add @angular/material


Component Segments
Name	Descriptionaddress-form	Component with a form group that uses Material Design form controls to prompt for a shipping address</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:ng-template-ng-container&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:ng-template-ng-container</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:ng-template-ng-container&amp;rev=1744711518&amp;do=diff</link>
        <description>ng-template와 ng-container

@defer
ViewContainerRef


@defer (뷰포트에서) { 
  &lt; comment-list /&gt;
} @placeholder { 
  &lt;!-- 댓글이 로드될 때까지 표시할 자리 표시자 콘텐츠 --&gt; 
  &lt; img  src = &quot;comments-placeholder.png&quot; &gt;
}


@defer (뷰포트에서) { 
  &lt; comment-list /&gt;
} @loading { 
  로드 중… 
} @error { 
  로드 실패 :( 
} @placeholder { 
  &lt; img  src = &quot;comments-placeholder.png&quot; &gt;
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngfor&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:ngfor</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:ngfor&amp;rev=1744711518&amp;do=diff</link>
        <description>ngFor Direction


  &lt;div *ngFor=&quot;let color of colors; index as i; first as f; last as l; odd as o; even as e&quot;&gt;
    &lt;h2&gt;{{i}} {{color}} {{ f }} {{ l }} {{ o }} {{ e }}&lt;/h2&gt;
  &lt;/div&gt;



export class TestNgforComponent implements OnInit {
  colors = [&quot;red&quot;,&quot;blue&quot;,&quot;green&quot;,&quot;yellow&quot;];
  constructor() { }
  ngOnInit() {
  }
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngif&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:ngif</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:ngif&amp;rev=1744711518&amp;do=diff</link>
        <description>ngIf

Html Element를 보여주거나 안 보여주거나 한다.


&lt;div *ngIf=&quot;false&quot;&gt;
  Codevolution
&lt;/div&gt;


2.ng-template사용


&lt;div *ngIf=&quot;displayName; else elseBlock&quot;&gt;
  Codevolution
&lt;/div&gt;
&lt;ng-template #elseBlock&gt;
  &lt;h2&gt;
    name is hidden
  &lt;/h2&gt;
&lt;/ng-template&gt;</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngmodulefaq&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:ngmodulefaq</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:ngmodulefaq&amp;rev=1744711518&amp;do=diff</link>
        <description>NgModule FAQs</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:ngswitch&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:ngswitch</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:ngswitch&amp;rev=1744711518&amp;do=diff</link>
        <description>ngSwitch


&lt;div [ngSwitch]=&quot;color&quot;&gt;
    &lt;div *ngSwitchCase=&quot;&#039;red&#039;&quot;&gt;Red&lt;/div&gt;
    &lt;div *ngSwitchCase=&quot;&#039;blue&#039;&quot;&gt;Blue&lt;/div&gt;
    &lt;div *ngSwitchCase=&quot;&#039;orange&#039;&quot;&gt;Orange&lt;/div&gt;
    &lt;div *ngSwitchDefault&gt;Default&lt;/div&gt;
  &lt;/div&gt;



export class TestNgswitchComponent implements OnInit {
  public color = &quot;blue&quot;;
  constructor() { }
  ngOnInit() {
  }
}</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:observable_rxjs&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:observable_rxjs</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:observable_rxjs&amp;rev=1744711518&amp;do=diff</link>
        <description>Observable &amp; RxJS

	*  Observable
	*  The RxJS library
	*  Observables in Angular
	*  Practical observable usage
	*  Observables compared to other techniques

Observable

The RxJS Library

Observables in Angular

Practical observable usage

Observables compared to other techniques</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:pipe&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:pipe</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:pipe&amp;rev=1744711518&amp;do=diff</link>
        <description>Pipe



    &lt;h2&gt;{{ name }}&lt;/h2&gt;
    &lt;h2&gt;{{ name | lowercase }}&lt;/h2&gt;
    &lt;h2&gt;{{ name | uppercase }}&lt;/h2&gt;
    &lt;h2&gt;{{ message | titlecase }}&lt;/h2&gt;
    &lt;h2&gt;{{ name | slice:3:5 }}&lt;/h2&gt;
    &lt;h2&gt;{{ person | json }}&lt;/h2&gt;

    &lt;h2&gt;{{ 5.678 | number:&#039;1.2-3&#039;}}&lt;/h2&gt;
    &lt;h2&gt;{{ 5.678 | number:&#039;3.4-5&#039;}}&lt;/h2&gt;
    &lt;h2&gt;{{ 5.678 | number:&#039;3.1-2&#039;}}&lt;/h2&gt;

    &lt;h2&gt;{{ 0.25 | percent }}&lt;/h2&gt;
    &lt;h2&gt;{{ 0.25 | currency }}&lt;/h2&gt;
    &lt;h2&gt;{{ 0.25 | currency: &#039;GBP&#039; : &#039;code&#039;}}&lt;/h2&gt;
    &lt;h2&gt;{{ 0.25 | currency: &#039;EUR&#039; : &#039;code&#039;}}…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:property-binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:property-binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:property-binding&amp;rev=1744711518&amp;do=diff</link>
        <description>Property Binding

[Angular Property Binding]
Attributes and Properties are not the same.
Attributes - HTML
Properties - DOM(Document Object Model)
Attributes initialize DOM properties and then type are done. Attribute values cannot change once they are initialized.
Property values however can change.</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:reactive-forms&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:reactive-forms</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:reactive-forms&amp;rev=1744711518&amp;do=diff</link>
        <description>Reactive Forms

	*  Code and the logic resides in the component class
	*  No two way binding
	*  Well suited for complex scenarios
	*  Dynamic form fields
	*  Custom validation
	*  Dynamic Validation
	*  Unit test
	*  CLI generated project
	*  Add the form</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:routing&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:routing</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:routing&amp;rev=1744711518&amp;do=diff</link>
        <description>Routing


import { NgModule } from &#039;@angular/core&#039;;
import { Routes, RouterModule } from &#039;@angular/router&#039;;
import { DepartmentListComponent } from &#039;./department-list/department-list.component&#039;;
import { EmployeeListComponent } from &#039;./employee-list/employee-list.component&#039;;
import { PageNotFoundComponent } from &#039;./page-not-found/page-not-found.component&#039;;
import { DepartmentDetailComponent } from &#039;./department-detail/department-detail.component&#039;;
import { DepartmentOverviewComponent } from &#039;./d…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:service&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:service</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:service&amp;rev=1744711518&amp;do=diff</link>
        <description>Service

Angular는 component기반으로 작성하고자 한다. 소스는 독립성을 두어야 할 필요가 있다. 그중하나가 service라는 개념이다. service는 특별한 목적을 가지는 클래스이다. Injectable annotation을 사용하여 DI</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:style-binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:style-binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:style-binding&amp;rev=1744711518&amp;do=diff</link>
        <description>Style Binding


import { Component, OnInit } from &#039;@angular/core&#039;;

@Component({
  selector: &#039;app-test-sb&#039;,
  template: `
  &lt;h2&gt;
    Welcome {{ name }}
  &lt;/h2&gt;
  &lt;h2 [style.color]=&quot;hasError ? &#039;red&#039; : &#039;green&#039;&quot;&gt;Style Binding&lt;/h2&gt;
  &lt;h2 [style.color]=&quot;highlightColor&quot;&gt;Style Binding&lt;/h2&gt;

  &lt;h2 [ngStyle]=&quot;titleStyle&quot;&gt;Style Binding&lt;/h2&gt;
  `,
  styleUrls: [&#039;./test-sb.component.css&#039;]
})
export class TestSbComponent implements OnInit {

  public name = &quot;Codevolution&quot;;

  public successClass = &quot;text-succe…</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:template-reference-variables&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:template-reference-variables</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:template-reference-variables&amp;rev=1744711518&amp;do=diff</link>
        <description>Template Reference Variables

myInput을 주의해서 보시면 되겠습니다.


import { Component, OnInit } from &#039;@angular/core&#039;;

@Component({
  selector: &#039;app-test-trv&#039;,
  template: `
  &lt;h2&gt;
    Welcome {{ name }}
  &lt;/h2&gt;
  &lt;input #myInput type=&quot;text&quot;&gt;
  &lt;button (click)=&quot;logMessage(myInput)&quot;&gt;Log&lt;/button&gt;
  `,
  styleUrls: [&#039;./test-trv.component.css&#039;]
})
export class TestTrvComponent implements OnInit {
  name = &quot;Codevolution&quot;;

  constructor() { }

  ngOnInit() {
  }

  logMessage(value){
    console.log(value);
  …</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:testing&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:testing</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:testing&amp;rev=1744711518&amp;do=diff</link>
        <description>Angular Testing

Test Tool &amp; Library

	*  Jasmine
	*  Karma
	*  Angular TestBed
	*  WallabyJS
	*  Protractor</description>
    </item>
    <item rdf:about="https://www.garamx.com/dokuwiki/doku.php?id=angular:two-way-binding&amp;rev=1744711518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T10:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>angular:two-way-binding</title>
        <link>https://www.garamx.com/dokuwiki/doku.php?id=angular:two-way-binding&amp;rev=1744711518&amp;do=diff</link>
        <description>Two Way Binding


&lt;input [(ngModel)]=&quot;name&quot; type=&#039;text&#039;&gt;


ngModel를 사용하려면 app.module.ts파일에 FormsModule를 포함시켜야 합니다.


import { FormsModule } from &#039;@angular/forms&#039;



import { Component, OnInit } from &#039;@angular/core&#039;;

@Component({
  selector: &#039;app-login&#039;,
  //templateUrl: &#039;./login.component.html&#039;,
  template: `&lt;div&gt;
  &lt;input [(ngModel)]=&quot;login_id&quot; type=&quot;text&quot;&gt;
  &lt;input [(ngModel)]=&quot;password&quot; type=&quot;password&quot; (keyup.enter)=&quot;login()&quot;&gt;
  &lt;button (click)=&quot;login()&quot; id=&quot;btnSave&quot;&gt;로그인&lt;/button&gt;
&lt;/div&gt;
  `,…</description>
    </item>
</rdf:RDF>
