2

Я пытаюсь создать новую угловую директиву с использованием TypeScript. Проблема возникает только в том случае, если я планирую использовать область выделения в директиве. Вот что я делаю:Изолировать область действия в директиве с использованием TypeScript и Angular 1

module Foo.Layout { 
    "use strict"; 
    class SidebarDirective implements ng.IDirective { 

     templateUrl = "/layout/sidebar/sidebar.html"; 
     restrict = "E"; 
     controller = SidebarController; 
     scope = { 
      align: "@" 
     } 

     static factory() { 
      var instance =() => { 
       return new SidebarDirective(); 
      } 
      return instance; 
     }  
    } 
    angular.module("app.layout").directive("fooSidebar", SidebarDirective.factory()); 
} 

Проблема происходит только при добавлении scope = {...} заявления еще компилирует нормально. Ниже приведена ошибка.

Ошибка TS2420 «SidebarDirective» не соответствует интерфейсу «IDirective». Типы «сфера» собственности несовместимы. Тип '{ориентация: строка; } 'не присваивается type' boolean | {[boundProperty: string]: string; }». Недопустимая подпись индекса в типе '{ориентация: строка; }»

И да в моей типизации ng.IDirective имеют область видимости свойство типа scope?: boolean | {[boundProperty: string]: string};

Что такое идеальный способ создать изолят области в моей директиве? (Я использую angularjs.TypeScript.DefinitelyTyped версии 6.5.5)

ответ

0

Пытались ли вы с

scope = { 
      align: "=" 
     } 
+0

Япом и он не работает :( – snippetkid

+0

это даст вам ошибку в компиляции (машинопись)? –

+0

Да, это дает ошибку при составлении. – snippetkid