TypeScript: How do I define a static array of strings in my directive

10,713

You can declare a static variable in your class.

export class MyDirective implements ng.IDirective {
    private static COLOR_LIST = ["#008b8b;", "#00bfff;", "#1766b5;", "#1768b5;", "#17b566;", "#1a7e55;", "#20b2aa;", "#25a071;", "#3b1153;", "#4f59ea;", "#4fc7ea;", "#522424;", "#633939;", "#6617b5;", "#68c4af;", "#7e1a43;", "#80e56f;", "#8b9dc3;", "#a560d6;", "#b56617;", "#b8860b;", "#ba55d3;", "#c0afaf;", "#c0c0c0;", "#c71585;", "#cd5c5c;", "#cec2e5;", "#dc143c", "#dcedc1;", "#f08080;", "#ff4040;", "#ffa500;", "#faebd7;"];
    public link: (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => void;


    constructor() {
        var that = this;
        this.link = (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => {

            scope.colorList = MyDirective.COLOR_LIST;

            ....
            });
        };
    }

}

However, I would advise you use the constant recipe instead.

Share:
10,713

Related videos on Youtube

NEHAVERMA8
Author by

NEHAVERMA8

This and that

Updated on September 15, 2022

Comments

  • NEHAVERMA8
    NEHAVERMA8 about 1 year

    I have a directive for a colorpicker widget. Currently I have defined an array of colors in the scope directly as scope.colorList as shown in the code below.

    As per the review comments that I got,I want to declare a static array of colors rather than having to write in scope directly every time the widget is used.

    export class MyDirective implements ng.IDirective {
        public link: (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => void;
    
    
        constructor() {
            var that = this;
            this.link = (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => {
    
                scope.colorList = ["#008b8b;", "#00bfff;", "#1766b5;", "#1768b5;", "#17b566;", "#1a7e55;", "#20b2aa;", "#25a071;", "#3b1153;", "#4f59ea;", "#4fc7ea;", "#522424;", "#633939;", "#6617b5;", "#68c4af;", "#7e1a43;", "#80e56f;", "#8b9dc3;", "#a560d6;", "#b56617;", "#b8860b;", "#ba55d3;", "#c0afaf;", "#c0c0c0;", "#c71585;", "#cd5c5c;", "#cec2e5;", "#dc143c", "#dcedc1;", "#f08080;", "#ff4040;", "#ffa500;", "#faebd7;"];
    
                ....
                });
            };
        }
    
    }
    
  • NEHAVERMA8
    NEHAVERMA8 over 7 years
    Thank you. I used the constant recipe.