Ionic 3 νλ‘μ νΈμ ν¨κ» VS Code v1.12.1 λ° Angular Language Service v0.1.3μ μ¬μ©νκ³ μμΌλ©° λͺ¨λ κ²μ΄ μ μ μμλ λΆκ΅¬νκ³ μ΄λ¬ν κ²½κ³ κ° νμλ©λλ€.
λ°©κΈ Angular Language Serviceμ VS Code 1.13μμ μ΄κ²μ 보μμ΅λλ€. hero-detail-component.htmlμ (save ()) λ©μλλ₯Ό μΆκ° ν λ Heroes Tutorialμμ λ°μν©λλ€.
μ½λλ μ μλνμ§λ§ λ©μλκ° λͺ ννκ² μ‘΄μ¬νλλΌλ λΉ¨κ°μ κ΅¬λΆ κ΅¬λΆ ν μ μ΄ νμλ©λλ€.
@bkbonner https://angular.io/generated/zips/toh-pt6/toh-pt6.zipμΌλ‘ μ΄κ²μ μ¬ν ν μ μμ΅λλ€.μ΄ λ¬Έμ λ₯Ό 보μ¬μ£Όλ μμ μ¬νμ΄ μμ΅λκΉ?
λ΄ μ½λλ² μ΄μ€λ₯Ό 보λ΄λ €κ³ ν μ μμ΅λλ€. λ΄κ° λΉμ μ΄ μλ ν μμλ λ€λ₯Έ κ²μ΄ μλμ§ λ³΄μ.
μλ νμΈμ @chuckjaz . λ°λΌμ .ts νμΌμ μμ νκ³ save () λ©μλλ₯Ό μ κ±°ν λ€μ ν΄λΉ html νμΌλ‘ μ΄λνμ¬ html νμΌμμ λ©μλ μ΄λ¦ νΈμΆμ μμ νλ©΄ λ°μ€μ΄ κ·Έμ΄μ Έ μμ΅λλ€. .tsμͺ½μ λ©μλλ₯Ό λ€μ μΆκ°νκ³ .html νμΌλ‘ λμ κ°λ©΄ ctrl + spaceλ₯Ό ν΄λ¦νκ³ λλ‘ λ€μ΄μμ λ©μλ μ΅μ μ€ νλλ₯Ό μ νν λκΉμ§ κ΅¬λΆ κ΅¬λΆ ν μ μ΄ μ μ§λ©λλ€.
μ΄κ²μ΄ μ΄μ μ μ΄λ»κ² μλνλμ§ νμ€νμ§ μμ§λ§ νΌλμ€λ¬μ΄ κ²°κ³Όλ₯Ό μ λ°νλ λ©μλμ μ‘΄μ¬μ λν μ ν¨μ± κ²μ¬κ° νΈλ¦¬κ±°λλ λ°©λ² μΌ μ μμ΅λλ€.
λλ κ·Έκ²μ΄ μ΄λ»κ² 보μ΄λμ§ λ³΄μ¬μ£Όλ λΉλμ€λ₯Ό ν¬ν¨ μμΌ°μ΅λλ€ : https://youtu.be/UjfFprgvTQg μ€λμ€λ μμ§λ§ κ·Έκ²μ μ€λͺ νκΈ° μν΄ μλ§μ ν¬ν¨νμ΅λλ€.
λλ κ°μ λ¬Έμ μ μ§λ©΄νκ³ μμ΅λλ€ ...
ν νλ¦Ώμμ .bindλ₯Ό μ¬μ©νλ κ²κ³Ό λμΌν λ¬Έμ κ° μμ΅λλ€.
μλνμ§λ§ μ€λ₯κ° λ°μν©λλ€.
μ¬κΈ°μ κ°μ νΈ 1 κ°
μμ§ ν΄κ²°μ± μ΄ μμ΅λκΉ?
μ¬κΈ°λ +1νμΈμ!
+1 μ νν λμΌν λ¬Έμ . μ λ°μ΄νΈκ° μμ΅λκΉ?
.bind(this)
μ λμΌν μ€λ₯μ
λλ€.
κ°λ μΈμ΄ μλΉμ€λ₯Ό μ¬μ©νμ¬ VS Codeμμ μ¬μ ν λ°μνλμ§ νμΈνμ΅λλ€. Ionic 3, Angular 5.
VS Code 1.24.1μ νμ₯ 0.1.9μμ 'hasError'λ λ°μν©λλ€.
<div *ngIf="form.get('phone').hasError(validation.type)">
hasErrorκ° ν¨μκ° μλμ§λ§ (Angular νμμ AbstractControl ν΄λμ€μ μμ) λΆνν©λλ€.
νΈμ§ : "!"λ₯Ό μΆκ°νμ¬ μμ ν μ μμ§λ§ κ·Έλ¬λ―λ‘:
<div *ngIf="form.get('phone')!.hasError(validation.type)">
get λ©μλκ° AbstractControl _or_ nullμ λ°ννκΈ° λλ¬Έμ
λλ€. λλ μΈμ΄ μλΉμ€κ° 'hasError'κ° 'null'μ ν¨μκ° μλλΌκ³ λΆννκ³ μλ€κ³ κ°μ ν©λλ€. μ€λ₯κ° λ€μκ³Ό κ°μΌλ©΄ λ λͺ
νν©λλ€.
The expression might be null
λ€λ₯Έ κΈ°λ₯κ³Ό λ§μ°¬κ°μ§λ‘ <div *ngIf="form.get('phone').errors[validation.type]">
The expression might be null
μ€λ₯κ° λ°μν©λλ€.
λν νμ μ‘΄μ¬ν΄μΌνλ $any()
μ ν¨κ» λ°μν©λλ€ (https://angular.io/guide/aot-compiler#disabling-type-checking-using-any).
μ μ)
<input [(ngModel)]="$any(content).houseId" />
[Angular] Unknown method '$any'
μ¬κΈ°μ κ°μ λ¬Έμ Ionic3 Angular5
VS Code v1.25.1
+ Angular v6.0.1
μμ λμΌν μ€λ₯κ° λ°μνμ΅λλ€.
VS μ½λ 1.25.1μμ λμΌν μ€λ₯κ° λ°μνμ΅λλ€.
λ²μ : 1.25.1
μ»€λ° : 1dfc5e557209371715f655691b1235b6b26a06be
λ μ§ : 2018-07-11T15 : 40 : 20.190Z
μ μ : 1.7.12
ν¬λ‘¬ : 58.0.3029.110
Node.js : 7.9.0
V8 : 5.8.283.38
μν€ν
μ² : x64
Angular 5 λ° VS Code 1.26.0μμ λμΌν μ€λ₯
Angular 6μμλ κ°μ λ¬Έμ κ° μμ΅λλ€.
[displayWith]="displayFn.bind(this)"
λͺ¨λ κ²μ΄ μ μλνλ©° νΈμ§κΈ°μμ μ€ννλ λμ μ€λ₯κ° νμλμ§ μμ΅λλ€.
[Angular] μ μμλ λ°©λ² 'bind'
λλ λ§μ°¬κ°μ§μ λλ€.
[myFun]="myService.myFunc.bind(myService)"
λͺ¨λκ° κ°μ λ¬Έμ κ° μλ€κ³ λ§νλ λμ μ΄ κ²½κ³ λ₯Ό 무μν μμλ λ°©λ²μ΄ μμ΅λκΉ?
μ΄μ κ°μ ν¨μ μ΄λ¦ λ€μ μΈλ―Έμ½λ‘ μ μΆκ°ν΄λ³΄μμμ€.
ν
μ€νΈ λ²νΌ
μ΄κ²μ κ²½κ³ λ₯Ό μ κ±°νλ κ² κ°μ΅λλ€.
μμ§ν μ΄κ²μ΄ μ¬μ ν λ¬Έμ μΈμ§ λͺ¨λ₯΄κ² μ΅λλ€.
VS Code & ALSλ κ·Έ μ΄νλ‘ λ§μ΄ μ
λ°μ΄νΈλμμΌλ©° μ€λ«λμμ΄ κ²½κ³ λ₯Ό λ³΄μ§ λͺ»νμ΅λλ€.
μ, μ΄κ²μ μ¬μ ν ββλ¬Έμ μ
λλ€.
VS μ½λ μ 보 :
Version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Date: 2019-02-12T02:19:29.629Z
Electron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Linux x64 4.15.0-45-generic
λ£μ΄λ³΄μμμ€; 2019 λ 2 μ 18 μΌ μ€μ 5:09μ Rafael [email protected] μ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€. μ , μ΄κ²μ μ¬μ ν ββλ¬Έμ μ λλ€.
VS μ½λ μ 보 :
λ²μ : 1.31.1
μ»€λ° : 1b8e8302e405050205e69b59abb3559592bb9e60
λ μ§ : 2019-02-12T02 : 19 : 29.629Z
μ μ : 3.1.2
ν¬λ‘¬ : 66.0.3359.181
Node.js : 10.2.0
V8 : 6.6.346.32
μ΄μ체μ : Linux x64 4.15.0-45-generic
β λκΈμ λ¬μ κΈ° λλ¬Έμ μ μ‘ λ κ²μ λλ€.μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ 보거λ λν λͺ©λ‘μ μμκ±°νμΈμ.
@multilexus μ΄κ²μ μλνμ§ μμ΅λλ€.
μ, μ΄κ²μ μ¬μ ν ββλ¬Έμ μ λλ€.
VS μ½λ μ 보 :
Version: 1.31.1 Commit: 1b8e8302e405050205e69b59abb3559592bb9e60 Date: 2019-02-12T02:19:29.629Z Electron: 3.1.2 Chrome: 66.0.3359.181 Node.js: 10.2.0 V8: 6.6.346.32 OS: Linux x64 4.15.0-45-generic
μ¬κΈ°μλ κ°μ λ¬Έμ κ° μμ΅λλ€ :-/ μ΄λ€ ν΄κ²°μ± μ΄λΌλ?
κ°λ 7 λμ€νλ μ΄κ°μλ +1 λ§€νΈ μλ μμ± κΈ°λ₯
μ μλνμ§λ§ κ²½κ³
@multilexus κ° λ§μ΅λλ€
μ¬μ ν λ¬Έμ μ λλ€. μ΄λ€ μμμ΄λΌλ?
λλ λ§μ°¬κ°μ§μ λλ€.
[myFun]="myService.myFunc.bind(myService)"
λ€μκ³Ό κ°μ΄ μμ± νμμμ€.
[myFun] = 'handleFun'
--- htmlμμthis.handleFun = this.myService.myFunc.bind (myService);
--ts νμΌμμ
μ, μ΄κ²μ μ¬μ ν ββλ¬Έμ μ λλ€.
VS μ½λ μ 보 :Version: 1.31.1 Commit: 1b8e8302e405050205e69b59abb3559592bb9e60 Date: 2019-02-12T02:19:29.629Z Electron: 3.1.2 Chrome: 66.0.3359.181 Node.js: 10.2.0 V8: 6.6.346.32 OS: Linux x64 4.15.0-45-generic
μ¬κΈ°μλ κ°μ λ¬Έμ κ° μμ΅λλ€ :-/ μ΄λ€ ν΄κ²°μ± μ΄λΌλ?
λ€μκ³Ό κ°μ΄ μμ± νμμμ€.
(ν΄λ¦) = 'handleFun'
--- htmlμμ
this.handleFun = this.setLanguage.bind (this, language);
--ts νμΌμμ
κ°λ 7 λμ€νλ μ΄κ°μλ +1 λ§€νΈ μλ μμ± κΈ°λ₯
μ μλνμ§λ§ κ²½κ³
λ€μκ³Ό κ°μ΄ μμ± νμμμ€.
[displayWith] = 'displayFun'
--- htmlμμ
this.displayFun = this.displayFun.bind (this);
--ts νμΌμμ
Angular 7μ <ng-template>
μμ $any()
λ©μλλ₯Ό μ¬μ©ν λμ΄ λ²κ·Έκ° λ°μνμ΅λλ€.
hasError
μ λν΄ μ¬μ ν λΆν
<div *ngIf="form.get('phone').hasError(validation.type)">
VSCode 1.34.0
λ΄μ 0.800.0
κ·Έλ€μ΄ κ·Έκ²μ κ³ μΉ λκΉμ§ ν΄κ²° λ°©λ²μ΄ μμ΅λλ€ (μ μ΄λ myMethod.bind(this)
:
bindMyMethodWithThis() {
return this.myMethod.bind(this);
}
<MyComponent [myInput]="bindMyMethodWithThis()">
κ·Έλ€μ΄ κ·Έκ²μ κ³ μΉ λκΉμ§ ν΄κ²° λ°©λ²μ΄ μμ΅λλ€ (μ μ΄λ
myMethod.bind(this)
:bindMyMethodWithThis() { return this.myMethod.bind(this); } <MyComponent [myInput]="bindMyMethodWithThis()">
ν
νλ¦Ώ λ΄μμ bind
ν¨μλ₯Ό μ¬μ©νλ κ²μ μ’μ§ μμ΅λλ€. bind
ν¨μλ λͺ¨λ νΈμΆμμ μ ν¨μλ₯Ό λ§λλλ€. λ°λΌμ λͺ¨λ λ³κ²½ κ°μ§μ λν΄ μλ‘μ΄ κΈ°λ₯μ μμ±ν©λλ€. ν΄λμ€ μμ±μ νμ΄ν ν¨μλ₯Ό ν λΉνλ κ²μ΄ μ’μ΅λλ€.
```νμ
μ€ν¬λ¦½νΈ
myMethod = (param1 : any, param2 : any) => {
// λ©μλ λ‘μ§
}
```html
<MyComponent [myInput]="myMethod">
@ andrius-pra μ’μ μκ°μ λλ€. μ΄μ μ΄κ²μ μ¬μ©νκ² μ΅λλ€. κ°μ¬ν©λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μκ°μ΄ λ무 μ€λ κ±Έλ €μ μ£μ‘ν©λλ€. μμ PRμ΄ λ¬Έμ λ₯Ό ν΄κ²°ν΄μΌν©λλ€.
μ΄ λ¬Έμ λ νλμ΄ μμ΄ μλμΌλ‘ μ κ²Όμ΅λλ€.
μ μ¬νκ±°λ κ΄λ ¨λ λ¬Έμ κ° λ°μνλ©΄ μλ‘μ΄ λ¬Έμ λ₯Ό μ μΆνμμμ€.
μλ λν μ κΈ μ μ± μ λν΄ μμΈν μμ보μμμ€.
_μ΄ μμ μ λ΄μ μν΄ μλμΌλ‘ μνλμμ΅λλ€ ._
κ°μ₯ μ μ©ν λκΈ
Angular 6μμλ κ°μ λ¬Έμ κ° μμ΅λλ€.
[displayWith]="displayFn.bind(this)"
λͺ¨λ κ²μ΄ μ μλνλ©° νΈμ§κΈ°μμ μ€ννλ λμ μ€λ₯κ° νμλμ§ μμ΅λλ€.