рдЪреВрдВрдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЯреНрд░рд╛рдВрд╕рдХреНрд▓реВрдЬрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
рддреЛ рд╡рд╣рд╛рдБ рд╣реИ; рдХреНрдпрд╛ рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЯреВрдЯрдиреЗ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдХреГрдкрдпрд╛ рдЗрд╕ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВред $$
рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдЬреА рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рд╣реА рддрддреНрд╡ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛?
рдореИрдВ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдбреАрдУрдПрдо рдХреЗ рд╕рд╛рде рдмреЗрд╡рдХреВрдл рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ $ рд╕рдВрдХрд▓рди (рдЬреЛ рд╕реНрд╡рдЪреНрдЫ рдЯреАрдмреАрдПрдЪ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)
рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ ngIf рд╢реИрд▓реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдо рдРрд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рди рдХрд░рдирд╛ рдкрдбрд╝реЗ рдФрд░ рдХреЗрд╡рд▓ рддрддреНрд╡ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдЧреБрдг рдмрдирд╛рдирд╛ рдкрдбрд╝реЗред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдирдЬреАрдЖрдИрдПрдл рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдкрддреНрддрд┐ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
import {SubscriptionService, ISubscription} from '../subscriptions/subscriptions.service';
interface IPBIfFeatureDirectiveScope extends ng.IScope {
isRenderElement: boolean;
}
interface IPBIfFeatureDirectiveAttributes extends ng.IAttributes {
pbIfFeature: string;
ngIf: string;
}
class IfFeatureDirective implements ng.IDirective {
public transclude: any;
public priority: number;
public terminal: boolean;
public restrict: string;
public scope = true;
public link: ng.IDirectiveLinkFn;
public $$tlb: boolean;
constructor(ngIfDirectiveArr: ng.IDirective[],
subscriptionService: SubscriptionService,
$parse: ng.IParseService) {
let ngIfDirective: any = ngIfDirectiveArr[0];
this.transclude = ngIfDirective.transclude;
this.priority = ngIfDirective.priority - 1;
this.terminal = ngIfDirective.terminal;
this.restrict = ngIfDirective.restrict;
this.$$tlb = true;
this.link = function (scope: IPBIfFeatureDirectiveScope,
element: ng.IAugmentedJQuery,
attr: IPBIfFeatureDirectiveAttributes) {
let expression: string = attr.pbIfFeature;
let argArray: IArguments = arguments;
let executeDirective = (): void => {
subscriptionService.getSubscription().$promise
.then((subscription: ISubscription) => {
scope.isRenderElement = $parse(expression)(subscription.features);
attr.ngIf = 'isRenderElement';
ngIfDirective.link.apply(null, argArray);
});
};
executeDirective();
};
}
}
export const ifFeatureDirectiveFactory = (ngIfDirective: ng.IDirective[],
subscriptionService: SubscriptionService,
$parse: ng.IParseService): ng.IDirective => new IfFeatureDirective(ngIfDirective, subscriptionService, $parse);
ifFeatureDirectiveFactory.$inject = ['ngIfDirective', 'subscriptionService', '$parse'];
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рд╣реА рддрддреНрд╡ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛?
рдореИрдВ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдбреАрдУрдПрдо рдХреЗ рд╕рд╛рде рдмреЗрд╡рдХреВрдл рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ $ рд╕рдВрдХрд▓рди (рдЬреЛ рд╕реНрд╡рдЪреНрдЫ рдЯреАрдмреАрдПрдЪ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)