Vscode-ng-language-service: рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рдзрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдордИ 2017  ┬╖  41рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/vscode-ng-language-service

рдореИрдВ рд╡реА.рдПрд╕. рдХреЛрдб v1.12.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХреЛрдгреАрдп рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ v0.1.3, Ionic 3 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдФрд░ рдореБрдЭреЗ рдпреЗ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж ...

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдПрдВрдЧреБрд▓рд░ 6 рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

[displayWith]="displayFn.bind(this)"

рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рджреМрдбрд╝рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИ, рдмрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ:

[рдХреЛрдгреАрдп] рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рдзрд┐ 'рдмрд╛рдЗрдВрдб'

рд╕рднреА 41 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреЛрдгреАрдп рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдФрд░ рд╡реА.рдПрд╕. рдХреЛрдб 1.13 рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ред рд╣реАрд░реЛ-рдбрд┐рдЯреЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯред html рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ (рд╕реЗрд╡ ()) рдХрд░рдиреЗ рдкрд░ рд╣реАрд░реЛрдЬрд╝ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ

рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рд▓рд╛рд▓ рд╕реНрдХреНрд╡реАрдЬреАрд▓реА рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

@bkbonner рдореИрдВ рдЗрд╕реЗ https://angular.io/generated/zips/toh-pt6/toh-pt6.zip рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрд╢реЛрдзрди рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдбрдмреЗрд╕ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реВрдБред

рд╣рд╛рдп @chuckjaz ред рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдореИрдВ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реЗрд╡ () рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд╕рдВрдмрдВрдзрд┐рдд HTML рдлрд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ html рдлрд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЙрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЗрд╕реЗ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╡рд┐рдзрд┐ рдХреЛ .ts рд╕рд╛рдЗрдб рдореЗрдВ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ .html рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рд╕реНрдХреНрд╡реАрдЬреА рд▓рд╛рдЗрди рддрдм рддрдХ рд░рд╣рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ ctrl + space рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░рддрд╛ рдФрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╣рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдорд╛рдиреНрдпрддрд╛ рдХреЛ рдХреИрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рднреНрд░рд╛рдордХ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: https://youtu.be/UjfFprgvTQg рдХреЛрдИ рдСрдбрд┐рдпреЛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХреИрдкреНрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд┐рдПред

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ ...

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ .indред

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред

+1 рд╡рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ

рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

+1 рдпрд╣рд╛рдБ рднреА!

+1 рд╡рд╣реА рдореБрджреНрджрд╛ред рдХреЛрдИ рд╕реБрдзрд╛рд░?

рдпрд╣рд╛рдБ .bind(this) рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ред

рдЕрднреА рднреА VS рдХреЛрдб рдореЗрдВ рдХреЛрдгреАрдп рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдпреЛрдирд┐рдХ 3, рдХреЛрдгреАрдп 5ред

рд╡реА.рдПрд╕. рдХреЛрдб рез.реирек.рез рдореЗрдВ реж.рез.реп рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде 'рд╣реИрд╢реНрд░реЛрдЯ' рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ:

<div *ngIf="form.get('phone').hasError(validation.type)">

рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣реИрд░реНрд░рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ (рдХреЛрдгреАрдп рд░реВрдкреЛрдВ рдХреЗ AbstractControl рд╡рд░реНрдЧ рдореЗрдВ) рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ "рдЬреЛрдбрд╝рдХрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!" рдЗрд╕ рдкреНрд░рдХрд╛рд░:
<div *ngIf="form.get('phone')!.hasError(validation.type)">

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Get Method рд░рд┐рдЯрд░реНрди 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#diseable-type-checking-use-any

рдкреВрд░реНрд╡)

<input [(ngModel)]="$any(content).houseId" />
[Angular] Unknown method '$any'

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ Ionic3 Angular5

рдореБрдЭреЗ VS рдХреЛрдб v1.25.1 + рдХреЛрдгреАрдп v6.0.1 рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА

VS рдХреЛрдб 1.25.1 рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА

рд╕рдВрд╕реНрдХрд░рдг: 1.25.1
рдХрдорд┐рдЯ: 1dfc5e557209371715f655691b1235b6b26a06be
рджрд┐рдирд╛рдВрдХ: 2018-07-11T15: 40: 20.190Z
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди: 1.7.12
рдХреНрд░реЛрдо: 58.0.3029.110
рдиреЛрдб.рдЬреЗрдПрд╕: 7.9.0
V8: 5.8.283.38
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: x64

рдХреЛрдгреАрдп 5 рдФрд░ рд╡реА.рдПрд╕. рдХреЛрдб рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ 1.26.0

рдореБрдЭреЗ рдПрдВрдЧреБрд▓рд░ 6 рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

[displayWith]="displayFn.bind(this)"

рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рджреМрдбрд╝рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИ, рдмрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ:

[рдХреЛрдгреАрдп] рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рдзрд┐ 'рдмрд╛рдЗрдВрдб'

рдореЗрд░реЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред

[myFun]="myService.myFunc.bind(myService)"

рдХреНрдпрд╛ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдмрдЬрд╛рдп рдХрд╣рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗ рдмрд╛рдж рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЛ рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ


рдкрд░реАрдХреНрд╖рдг рдмрдЯрди

рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред

рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рддреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред
VS рдХреЛрдб рдФрд░ ALS рдХреЛ рддрдм рд╕реЗ рдмрд╣реБрдд рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрдЦреА рд╣реИ ...

рд╣рд╛рдВ, рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред
image

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

рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ; рдЗрд╕рдХреЗ рдмрд╛рджред 18 рдлрд░рд╡рд░реА, 2019 5:09 AM, рд░рд╛рдлреЗрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛: рд╣рд╛рдВ , рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

VS рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
рд╕рдВрд╕реНрдХрд░рдг: 1.31.1
рдХрдорд┐рдЯ: 1b8e8302e405050205e69b59abb3559592bb9e60
рджрд┐рдирд╛рдВрдХ: 2019-02-12T02: 19: 29.629Z
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди: 3.1.2
рдХреНрд░реЛрдо: 66.0.3359.181
рдиреЛрдб.рдЬреЗрдПрд╕: 10.2.0
V8: 6.6.346.32
рдУрдПрд╕: рд▓рд┐рдирдХреНрд╕ x64 4.15.0-45-рдЬреЗрдиреЗрд░рд┐рдХ

тАФрдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред рд╕реАрдзреЗ рдЗрд╕ рдИрдореЗрд▓ рдкрд░ рдЬрд╛рдПрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

@ рдореЙрд▓реНрдЯрд┐рд▓реЗрдХреНрд╕рд╕ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╣рд╛рдВ, рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред
image

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

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛: - / рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

+1 рдПрдХ рдЪрдЯрд╛рдИ рдкрд░ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп 7 рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде
image

рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА

@ рдореНрдпреВрдЯрд┐рд▓реИрдХреНрд╕рд╕ рд╕рд╣реА рд╣реИ рдореИрдВ рд╡реА.рдПрд╕. рдХреЛрдб 1.31.1 рдореЗрдВ рдХреЛрдгреАрдп 7 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреЛрдИ рдЦрдмрд░?

рдореЗрд░реЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред

[myFun]="myService.myFunc.bind(myService)"

рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ
[myFun] = 'handleFun'
--- рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ

this.handleFun = this.myService.myFunc.bind (myService);
- ts рдлрд╝рд╛рдЗрд▓

рд╣рд╛рдВ, рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред
image
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

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛: - / рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ
(рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) = 'рд╣реИрдВрдбрд▓'
--- рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ

this.handleFun = this.setLanguage.bind (рдпрд╣, рднрд╛рд╖рд╛);
- ts рдлрд╝рд╛рдЗрд▓

+1 рдПрдХ рдЪрдЯрд╛рдИ рдкрд░ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп 7 рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде
image

рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА

рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ
[displayWith] = 'displayFun'
--- рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ

this.displayFun = this.displayFun.bind (рдпрд╣);
- ts рдлрд╝рд╛рдЗрд▓

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ $any() рдореЗрдВ рд╡рд┐рдзрд┐ <ng-template> рдХреЛрдгреАрдп 7 рдореЗрдВред

рдЕрднреА рднреА 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 рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░, рдореИрдВ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛, рдзрдиреНрдпрд╡рд╛рджред

рд╕рднреА рдХреЛ рдЦреЗрдж рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрд╛ред рдКрдкрд░ рдХреЗ рдкреАрдЖрд░ рдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдореБрджреНрджрд╛ рд╕реНрд╡рддрдГ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдорд╛рди рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред

рд╣рдорд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд▓реЙрдХрд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

_ рдпрд╣ рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ ред_

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pfeigl picture pfeigl  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

user3323 picture user3323  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MarcOne68 picture MarcOne68  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kondi picture kondi  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JoannaFalkowska picture JoannaFalkowska  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ