3

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;"];

            ....
            });
        };
    }

}

1 Answer 1

4

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you. I used the constant recipe.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.