-
Notifications
You must be signed in to change notification settings - Fork 2
Controller'lar
#BaseController
BaseController Tüm controller'in miras aldığı,temel form ve service injection implementasyonlarını içeren abstract controller sınıfıdır.
Aşagidaki sistem builtin servisleride inject olmaktadir
- $rootScope: IRotaRootScope;
- $scope: ng.IScope;
- $window: ng.IWindowService;
- $stateParams: ng.ui.IStateParamsService;
- $document: duScroll.IDocumentService;
- hotkeys: ng.hotkeys.HotkeysProvider;
###Properties
logger: ILogger;
notification : Notification logger servisidir
notification: IBaseLogger
toastr: Toastr logger servisidir
toastr: IBaseLogger
console: Console logger servisidir
console: IBaseLogger
dialogs: IDialogs;
config : App global config bilgilerinin bulunduğu sınıf.
config: IMainConfig;
constants : Uygulama genelindeki global constants objesi
constants: IConstants
routing: IRouting;
localization : Localization servisi
localization: ILocalization;
rtForm : rtForm directive'nin scope üzerindeki form controller'i.
rtForm: ng.IFormController
isFormDirty,isFormValid,isFormInvalid,isFormPristine,isFormPending
eventleri rtForm controller bilgisine göre uygun validasyon verisini döndürmektedir.
###Methods
isAssigned : Verilen value parametresine göre truety/falsy kontrolu yapar
isAssigned(value: any): boolean ;
on : Mesaj listener eventini register eder.
on(eventName: string, fn: (...args: any[]) => void): void
broadcast: Event broadcast eder.Register edilen eventler,scope destroy oldugunda,onlarda temizlenir.
broadcast(eventName: string, ...params: any[]): void
#BaseModelController
Önemli : BaseModelController miras almak yerine,bu controllari miras alan diğer controller'lar kullanılmalıdır (BaseCrudController,BaseListController...)
Model ile ilgili base implementasyonları sağlayan abstract controller'dir.BaseController'dan miras alir.Temel görevi,asenkron model çagirimi,model erişimi,error yönetimi vs. gibi işlemlerdir.Tanımlama yaparken generic model tipini belirtmemiz gerekmektedir.Model IBaseCrudModel
'i extend etmesi gerekiyor.
class BaseModelController<TModel extends IBaseCrudModel> extends BaseController
Aşagidaki sistem builtin servisleri inject olmaktadir
- $q: ng.IQService;
- $http: ng.IHttpService;
###Constructor
constructor(bundle: IBundle, options?: IModelPageOptions)
####Parametreler bundle : IBundle Sistem ve sayfaya özel injection servislerini barındıran dictionary options : IModelPageOptions Model sayfanın nasıl davranacagini ayarlayan settings'ler.
###Methods
getModel : Abstract temel model fetch methodu.Bu method model bilgisini set etmek için kullanılır.
Miras alan controllerde otomatik olarak veya konfigurasyona göre bu method çagirilmaktadir.Direk çağırım olmamalıdır
abstract getModel(modelFilter?: IBaseModelFilter): ng.IPromise<TModel> | TModel | ng.IPromise<IBaseListModel<TModel>> |
IBaseListModel<TModel> | ng.IPromise<IPagingListModel<TModel>> | IPagingListModel<TModel>;
####Parametreler modelFilter: IBaseModelFilter Model bilgisini cekmek icin gerekli olan filtre bilgisidir.Örnegin,BaseCrudController'de ilgili kaydın filtresi {id: 5} şeklinde olabilir.Listeleme sayfalarında ise filtre kriterleridir.
Return Type : Override eden Controller tipine göre Literal Object,Array veya Promise olabilir.Promise datası Object veya Array olmali
loadedModel : Model yüklendikten sonra çalışan method.
loadedModel(model: TModel | IBaseListModel<TModel> | IPagingListModel<TModel>): void
Önemli: loadedModel eger override edilecekse,base loadedModel call edilmeli.
super.loadedModel(model);
####Parametreler model : TModel | IBaseListModel | IPagingListModel Model yüklendikten sonra,controller tipine göre single model,liste model veya paging list model döndürür
###IModelPageOptions newItemParamValue : Varsayilan id parametresinin varsayilan degeri olan "new" degerini override etmek için kullanılır.
newItemParamValue?: string
newItemParamName : Varsayilan unique "id" parametresinin adını override etmek için kullanılır.
newItemParamName?: string;
initializeModel : true verilirse,initModel methodunu çaliştirarak,getModel'i tetikler.Miras alan controller'a göre farkli degerler alabilir.
Örnegin ListController'da eğer true verilirse,controller yüklenir yüklenmez getModel methodu çalişir ve grid'i bind eder.
initializeModel?: boolean;
#BaseCrudController
Bu controller detay form sayfalarının CRUD işlemlerinden sorumludur.BaseModelController'den miras alır.
Sayfa ,klasik olarak 2 farklı modda çalişir.
- Yeni Kayıt
- Düzeltme
Temel görevleri aşagidaki gibidir.
- Model property tracking & dirty checking (Obserable Model)
- Model validasyon işlemleri
- Save process (Create & Update)
- Delete process
- rtCrudButtons handlers
Standart olarak sayfa düzeltme modunda açıldıgında,düzenlenecek modele ait unique bir parametre ister.Bu parametrenin varsayilan adi "id" 'dir
Örnek : Kullanıcılar state'i Url
url = /kullanicilar/:id
51 unique id li kayıt düzetme modunda acilacak
http://localhost:48626/#/kullanicilar/51
Yeni kullanıcı
http://localhost:48626/#/kullanicilar/new
Önemli : Detay sayfalar için oluşturulan unique parametre adı varsayilan "id" olmalı.Örnegin menu url bilgisi
url: 'admin/urunler/:id'
şeklinde tanımlanmalı.(Edukkan örnegi) Bazı istisnai durumlarda configure edilebilir.
Önemli : "id" parametresi yeni kayit modunda varsayılan "new" string bilgisini alir.Düzeltme modunda ise ilgili kaydın numeric id bilgisi parametre olarak geçilmelidir
Aşagidaki sistem builtin servislerini inject eder
- $interval: ng.IIntervalService;
- $timeout: ng.ITimeoutService;
Edukkan demo'sundaki urun controller'i inceleyebilirsiniz
###Constructor
constructor(bundle: IBundle, options?: ICrudPageOptions)
####Parametreler bundle : IBundle Sistem ve sayfaya özel injection servislerini barındıran dictionary options : ICrudPageOptions Crud sayfanın nasıl davranacagini ayarlayan settings'ler.
###Properties crudPageFlags : Sayfanın o anki modu hakkında bize bilgi verir
crudPageFlags: ICrudPageFlags
Aşagidaki flag'lari alabilir
isNew?: boolean; // Yeni kayit
isSaving?: boolean, //Kayıt işlemi başladı
isDeleting?: boolean, //Silme işlemi başladı
isCloning?: boolean; //Kayıt kopyalanıyor.
validators : Validasyon servisi
validators: IValidators
caching: ICaching;
model : Tanımlanan generic tip model bilgisi.IObserable
ile ilgili Obserable Model sayfasına bakabilirsiniz
model: TModel & IObserableModel<TModel>
crudPageOptions : Crud sayfa ayarları
crudPageOptions: ICrudPageOptions
id: Sayfaya parametre olarak geçilen id bilgisini verir,this.$stateParams.id
nin kısayoludur
id : string | number
isNew : Sayfa yeni modda ise true döndürür.
isNew: boolean
###Methods
revertBack : Model üzerinde yapılan tüm değişiklikleri geri alip,orjinal haline döndürür.Duzeltme modunda anlamlıdır.
revertBack(): void
initNewModel : rtCrudButtons tarafindan "Yeni Kayıt" işlemi icin çağırılan ilk methoddur.Exceptional durum harici override edilmemelidir.Bunun yerine newModel methodu kullanilmalidir
initNewModel(cloning?: boolean): ng.IPromise<TModel>
newModel : Yeni kayit model atamalari bu method içinde tanımlanmalidir.Contoller "Yeni kayıt" modunda açılırken çağirilir.
newModel(clonedModel?: TModel): ng.IPromise<TModel> | TModel
####Parameters clonedModel : TModel rtCrudButtons'dan "Kaydı Kopyala" seçildigi zaman,açik olan kaydin orjinal hali'dir.Bu model üzerinde gerekli (eger varsa) değişiklik yapılıp geriye döndürülmelidir.
Örnek : Edukkan urun controller
newModel(clonedModel?: IUrun): angular.IPromise<IUrun> | IUrun {
const model = super.newModel(clonedModel) as IUrun;
model.birimFiyat = 0;
model.stokMiktari = 1;
model.iliskiliUrunler = [];
return model;
}
Return Type : TModel
veya Promise<TModel>
olmali
initSaveAndContinue : rtCrudButtons'dan Kaydet & Devam butonu'na basılınca çalışan metthoddur.Exceptional durum harici override edilmemelidir
initSaveAndContinue(): ng.IPromise<TModel>
initSaveModel : rtCrudButtons'dan Kaydet veya Kaydet &Devam buttonuna basinca çalışan method.Exceptional durumlar hariç override edilmemelidir.Bunun yerine "saveModel" methodu kullanılmalıdır
initSaveModel(options?: ISaveOptions): ng.IPromise<TModel>
saveModel : rtCrudButtons'dan Kaydet veya Kaydet & Devam buttonuna basınca çalışan abstract method.Kayıt işlemleri bu method altında olmalidir.
abstract saveModel(options: ISaveOptions): ng.IPromise<ICrudServerResponseData>;
####Parameters
options: ISaveOptions Kayıt işlemi options bilgileri
Return Type : ICrudServerResponseData Save işlemi sonucunda Server tarafindan döndürülmesi beklenen interface tipi.
Önemli : Save işleminde restful servise gönderilecek model bilgisi
options.jsonModel
veyathis.model.toJson()
olmalı.Obserable model gönderilmemeliÖnemli : Eğer Rota server standart methodları kullanılmıyorsa,Restful service'lerde save işlemin sonucu
ICrudServerResponseData
tipine uyumlu olmak zorundadir.
beforeSaveModel : Bu method saveModel methodu çalişmadan önce çalişir.
beforeSaveModel(options: ISaveOptions): ng.IPromise<IParserException> | void
Genel 2 görevi vardir
- Save işleminden önceki atamalar (userId vs..)
- Validasyon (Validasyon işlemleri için ayrıca Validators servisini inceleyebilirsiniz )
Örnek
beforeSaveModel(options: ISaveOptions): IP<IParserException> {
return this.common.rejectedPromise<IParserException>({ message: 'Ups..!,Something went wrong', logType: LogType.Error });
}
####Parameters
options: ISaveOptions Kayıt işlemi options bilgileri *Return Type : Validasyon yapılacaksa rejected promise döndürmeli.Datası IParserException tipinde olmali.*Eger sadece atama için kullanılacaksa void döndürmeli
afterSaveModel : Bu method model save işlemi tamamlandiktan sonra (Server kayıt işlemi) çalışır.
afterSaveModel(options: ISaveOptions): void
####Parameters
options: ISaveOptions Kayıt işlemi options bilgileri Return Type : void
initDeleteModel : rtCrudButtons'dan Delete butonuna basınca çalışan method.Exceptional durumlar haric kullanılmaması gerekiyor.Bunun yerine deletModel methodu kullanılmalı.
initDeleteModel(options: IDeleteOptions): ng.IPromise<any>
####Parameters
options: IDeleteOptions Delete işlemi options bilgileri
deleteModel : Model Delete işleminin yapılacagi method
deleteModel(options: IDeleteOptions): ng.IPromise<any>
####Parameters
options: IDeleteOptions Delete işlemi options bilgileri Return Type : Framework'un silme asenkron işleminin bittiği zamanı bilmesi için promise döndürülmesi gerekiyor.
beforeDeleteModel: Bu method Delete işlemi öncesinde çalişir.Görevi silme işleminden önceki diğer işlemler ve validasyondur.Aynı "beforeSaveModel" mantiğıyla çalişir.
beforeDeleteModel(options: IDeleteOptions): ng.IPromise<IParserException> | void
####Parameters
options: IDeleteOptions Delete işlemi options bilgileri *Return Type : Validasyon yapılacaksa rejected promise döndürmeli.Datası IParserException tipinde olmali.*Eger sadece atama için kullanılacaksa void döndürmeli
afterDeleteModel : Delete işlemi bittikten sonra çalışan method.
afterDeleteModel(options: IDeleteOptions): void
Return Type : void
###ICrudPageOptions
newItemParamValue : Varsayilan id parametresinin varsayilan degeri olan "new" degerini override etmek için kullanılır.
newItemParamValue?: string
newItemParamName : Varsayilan unique "id" parametresinin adını override etmek için kullanılır.
newItemParamName?: string;
checkDirtyOnExit : Model dirty check işlemin yapılıp yapılmayacağini ayarlayan parametredir.Varsayılan true
checkDirtyOnExit?: boolean;
Not : Bu parametre ile model dirty oldugunda ve çıkış işlemi yapılmak istendiğinde kullanıcıya onay sorarak ,cevaba göre kayit işlemi yapıp,formdan çıkış yapar
parsers : Save & Delete işlemlerinden önce validasyonu sağlamak amacıyla save ve delete parser pipeline methodlari çaliştirilir.
Save işlemi için varsayilan parser methodlari, checkAuthority,applyValidation,beforeSaveModel
Delete işlemi için varsayilan parser methodlari, checkAuthority,applyValidation,beforeDeleteModel
dir.Bu methodlara yeni ekleme & duzeltme yapılabilir.
parsers?: ICrudParsers;
crudButtonsVisibility : rtCrudButtons buttonlarının görünürlüklerini ayarlayan objedir.
crudButtonsVisibility?: ICrudButtonsVisibility;
Örnek :
this.crudPageOptions.crudButtonsVisibility.deleteButton = false;
postOnlyModelChanges : Bu property,Save işleminde,restful servise sadece modelin değişen alanlarını göndermek için kullanılır.
Not : Bu property
true
oldugunda modele ek olarakmodifiedProperties
dizisi eklenir.
changeIdParamOnSave : "Yeni kayıt" modunda Save işleminden sonra "id" parametresi ilgili modelin id bilgisi ile update edilerek form "Düzeltme moduna" geçer.Bu davranışı bu property ile disable edebiliriz.
changeIdParamOnSave?: boolean;
autoSave : Model bilgisini korumak amacıyla,belli interval araliğında localStorage'e kayıt eder.Recorvery durumda ise kullanıcıya onay sorarak kayıt edilmiş modeli geri yükler.Interval 30 saniyedir.
autoSave?: boolean;
readOnly : Formu sadece okuma modunda açmak için kullanılır.Kullanıcı herhangi bir değişiklik yapamaz.
readOnly?: boolean;
Örnek :
super(bundle, { autoSave: true });
###ISaveOptions
isNew : "Yeni Kayıt" modunda true döndürür
isNew?: boolean;
goon : "Kaydet & Devam et" butonuna basıldıgında bu flag true set edilir.
goon?: boolean;
showMessage : Eger false verilirse kayıt işlemi başarili bir şeklide sonlandiktan sonra toastr mesaji göstermez.Varsayilan true
showMessage?: boolean;
message : Custom kayıt başarılı mesajı.
message?: string;
jsonModel : Literal object model
jsonModel?: IBaseCrudModel;
redirectHandled : Eger afterSaveModel veya afterDeleteModel'de yönlendirme yapılırsa bu property true set edilmeli
redirectHandled?: boolean;
Örnek :
afterSaveModel(options: ISaveOptions): void {
options.redirectHandled = true;
this.routing.go("shell.content.musteri.vadeler.liste");
}
Save & Delete işlemi sonucunda server taraftan beklenen interface tipidir.
entity : Modelin server tarafta update/create edildikten sonra ki güncel hali.
entity?: IBaseCrudModel,
warningMessages : Server taraftan dönen warning mesajları
warningMessages?: Array<string>;
successMessages : Server taraftan dönen success mesajları
successMessages?: Array<string>;
infoMessages : Server taraftan dönen info mesajları
infoMessages?: Array<string>;
#BaseListController
Bu controller filtreleme & listeleme sayfaları için kullanılan base controller'dur.BaseModelController'dan miras almaktadır.Genel olarak filtre kriterleri ve gridden oluşmaktadir.Ayrıca rtListButtons eventlerini handle eder.
ÖNEMLİ : En az bir adet parametresiz rtGrid directive'i içermelidir.
Controller class tanımı 2 adet generic tip alır.
- TModel
- TModelFilter
TModel,grid datasının hangi model interface'inin arrayi olacağını ifade eder. TModelFilter grid datasini cekerken kullanacagimiz filtrenin tipini ifade eder.
class BaseListController<TModel extends IBaseCrudModel, TModelFilter extends IBaseListModelFilter>
Filter interface'i
IBaseListModelFilter
den miras almalıinterface ITodoFilter extends IBaseListModelFilter { ... }
###Constructor
constructor(bundle: IBundle, options?: IListPageOptions)
####Parametreler bundle : IBundle Sistem ve sayfaya özel injection servislerini barındıran dictionary options: IListPageOptions Listeleme sayfasının ayarlarını içeren object
###Properties
gridApi: Varsayilan grid api bilgisi.Api hakkında bilgiyi ui-grid docs'dan alabilirsiniz.
gridApi: uiGrid.IGridApi
gridOptions : Varsayilan grid'in ayarları.Grid options hakkında bilgiyi ui-grid docs'dan alabilirsiniz.
gridOptions: IGridOptions<TModel>
gridData : Varsayılan gridin data'sı
gridData: IBaseListModel<TModel>
gridSeletedRows : Varsayilan griddeki seçili olan satirlar.Seçim işlemi icin rtGrid directive'ini inceliyiniz.
gridSeletedRows: IBaseListModel<TModel>
**filter :**Filtre kriterlerini tanımladigimiz filtre objesi.HTML tarafinda vm.filter.****
şeklinde tanımlanmalı
filter: TModelFilter
**getGridColumns :**Varsayılan grid'in kolon bilgilerini döndüren method.Bu method'da ayrıca gridin options bilgileride guncellenebilir.
abstract getGridColumns(options: IGridOptions<TModel>): uiGrid.IColumnDef[]
Örnek :
Aşağıdaki örnek'te gridin kolon bilgilerini döndürmenin dışında,showDeleteButton özelliği set edilmiştir
getGridColumns(options: IGridOptions<IKategori>): uiGrid.IColumnDef[] {
options.showDeleteButton = false;
return [
{
field: 'kategoriAdi',
displayName: 'Kategori Adi',
width: '40%'
},
{
field: 'ustKategoriAdi',
displayName: 'Ust Kategori',
width: '*'
}
];
}
clearAll : Grid ve filtre bilgisini temizler
clearAll(): void
clearGrid : Grid'i temizler
clearGrid(): void
**clearSelectedRows :**Seçili olan satırların seçimini kaldırır
clearSelectedRows(): void
initSearchModel : rtListButtons Ara buttonun handler'idir.Exceptional durum haric override edilmemelidir.Onun yerine getModel methodu kullanılmalı
initSearchModel(pager?: any): ng.IPromise<IBaseListModel<TModel>> | ng.IPromise<IPagingListModel<TModel>>
goToDetailState : Varsayılan grid'in edit butonuna bastıgımızda bu method çalışır.Ayrıca rtListButtons directive'indeki Yeni butonuna bastigimizda da bu method çalışır ve id
parametresi undefined
gider.
goToDetailState(id: string): ng.IPromise<any>
####Parametreler id : string İlgili satirin id değeri.Yeni kayit'ta ise undefined gidicektir.
initDeleteModel : Grid üzerinde sil butonuna bastiginda ilk çalişan event.Exceptional durumlar hariç kullanılmaması gerekir.Bunun yerine deleteModel methodu kullanılmalı.
initDeleteModel(id: number): ng.IPromise<any>
####Parametreler id : number İlgili satirin id değeri.
initDeleteSelectedModels : Seçili olan satirları silmek için kullanılır.Exceptional durumlar hariç kullanılmaması gerekir.Bunun yerine deleteModel methodu kullanılmalı.Seçili olan satirlarin id bilgisi dizi olarak deleteModel methodu gecilir.
initDeleteSelectedModels(): ng.IPromise<any>
deleteModel : Grid üzerinde sil butonuna bastiginda çalişan event.İlgili modele ait silme işlemini bu method'ta yapmaliyiz.
deleteModel(id: number | number[]): ng.IPromise<any> | void
####Parametreler id : number İlgili satirin id değeri veya seçilen satırların id dizi bilgisi. Return Type Promise veya void olabilir
##IListPageOptions
editState : Listeleme sayfasının detay sayfa olarak hangi state'e gidecegini bu ayar ile belirtiyoruz.Eger dinamik olarak custom bir state'e yönelenmesini istiyorsak goToDetailState methodunu override etmeliyiz
editState: string;
pagingEnabled : Varsayilan grid'de paging olup/olmayacagi ayarı.Varsayilan true.
pagingEnabled?: boolean;
pageSize : Varsayilan grid'de eger paging enabled ise,grid'in pageSize bilgisi
pageSize?: number;
showMesssage : Listeleme sayfassındaki rota'dan gelen mesajları disable eder
showMesssage?: boolean;
listButtonVisibility : rtListButtons üzerindeki buttonlarin görünürlüklerini ayarladıgımız object.
listButtonVisibility?: IListButtonsVisibility;
Örnek
this.listPageOptions.listButtonVisibility.deleteSelected = false
storeFilterValues : Girilen filtre bilgilerini sessionStore'a kayit ederek aynı listeleme sayfasına tekrar girdigimizde filtre bilglirini geri yüklemeye yariyor.Varsayilan false.
storeFilterValues?: boolean;
##IGridOptions
showEditButton : Varsayılan grid üzerindeki düzeltme butonu'nun visibility'sini ayaralar
showEditButton?: boolean;
**showDeleteButton :**Varsayılan grid üzerindeki silme butonu'nun visibility'sini ayaralar
showDeleteButton?: boolean;
rowFormatter : Grid satir renklendirmesi için kullanılır
rowFormatter?(row: uiGrid.IGridRowOf<TModel>): string;
####Parametreler
row : uiGrid.IGridRowOf<TModel>
Satir row bilgisi
Return Type satira verilecek style class adi bilgisi olmali
Örnek
getGridColumns(options: IGridOptions<IUrun>): uiGrid.IColumnDef[] {
options.rowFormatter = (row) => {
return row.entity.stokMiktari <= this.urunApi.minStokMiktari ? 'kritikStokMiktari' : '';
}...
Yukardaki örnekte ürün stok miktarı minStok miktarından düşük ise ilgili rowun class'ina 'kritikStokMiktari' atanıyor.
showContextMenu : Varsayılan grid üzerinde eger context menu göstermek istiyorsak bu özellik kullanılmalı.
showContextMenu?: boolean;
Önemli: Context menü HTML content tanımlama yaparken ilgli template id'si contextmenu.html olmali
Örnek
options.showContextMenu = true;
Context menuyu aktif ettikten sonra ilgili template'i tanımlıyoruz
<script id="contextmenu.html" type="text/ng-template">
<ul class="contextmenu">
....
</ul>
</script>
Örnek için edukkan urunler sayfasına bakabilirsiniz
#BaseModalController
Modal pencerelerde kullanılacak controller'ların base controller'dur.BaseModelController'dan miras alir.Temel görevi modal implemantasyonlarıdır.
ÖNEMLİ : Modal pencereler custom controller belirtmeden açılırsa,varsayılan controller BaseModalController'dür.
Modal işlemleri için Dialogs servisini inceleyiniz Angular Bootstrap Model servisi icin bu dökümanı inceleyiniz
###Properties
$uibModalInstance : Angular Bootstrap Modal instance objesi
$uibModalInstance: ng.ui.bootstrap.IModalServiceInstance;
instanceOptions : Modal pencereye controller'dan gecilen parametre bilgileri.Model,params ve services property'lerini içerir.
instanceOptions: IModalInstanceOptions;
**params :**Modal'a instanceOptions'dan gecilen params parametresi
params: any
###Methods
modalResult : Modal pencereyi başarılı şekilde kapatmak için kullanılan method. Dialogs.showModal
methodunun sonucu resolved promise olucaktir.Verilen parametre modal sonucu olarak dönecektir.Eger parametresiz çağırılırsa this.model
geriye dönecektir.Custom işler için override edilebilir.
modalResult(data: any): void
####Parameters data : any Sonuc promise'inin datasi Return Type : Resolved Promise
closeModal : Modal pencereyi başarısız olarak kapatmak için kullanılır.
closeModal(): void
####Parameters Return Type : Rejected Promise
##IModalInstanceOptions
model : Modal controller'a geçilen model bilgisi
model?: any;
params : Model dışında controller'a gecilen extra parametre'ler
params?: any;
services : Eger custom controler kullanılmaz ise,BaseModalController'a service inject etmek icin kullanılan ve service isimlerini alan dizi
services?: string[];
Örnek
Aşagidaki örnek'te csuntom controller tanımlanmadan bir modal açıyoruz.Bu modal'a 'divisionApi', 'musteriApi' service'lerini inject ediyoruz.
this.dialogs.showModal<IMTUyari>({
size: 'lg',
templateUrl: 'yenimusteriuyari.tmpl',
instanceOptions: { model: uyari, services: ['divisionApi', 'musteriApi'] }
}).then((model): void => {
if (model.modelState === ModelStates.Detached)
this.model.musteriUyarilar.add(model);
});
###Directives rtSelect, rtMultiSelect, rtDatePicker, rtNumber, rtForm, rtGrid, rtFocus, rtButton, rtCrudButtons, rtListButtons, rtReportButtons, rtPanel, rtTree, rtEditor, rtFileUpload, rtMultiFileUpload, rtDateRange, rtCallout, rtValidator, rtTabs, rtInclude ###Controllers BaseController, BaseModelController, BaseCrudController, BaseListController BaseModalControler ###Apis BaseApi BaseCrudApi
###Services Logger, Routing, Security, Dialogs, Caching, Validators, Reporting, Localization, SignalR, Common