Tengo estos dos componentes:
<app-z-grid [master]="true" title="Tip korisnika" *ngIf="showTab('Tip/podtip korisnika') || showTab('Tip korisnika')" [restPath]="'customertype'" (fillDetailParent)="reinit($event)"></app-z-grid> <app-z-grid title="Podtip korisnika" *ngIf="showTab('Tip/podtip korisnika') || showTab('Podtip korisnika')" [path]='"customerclassification/customerstype.json"' [restPath]="'customerstype'" [isDetail]="'customerstype'" [parentName]="'customertypeCode'" ></app-z-grid>El primero tiene maestro y el segundo no.
Lo que quiero es establecer botones condicionales para deshabilitar si no es maestro y si action.name !=='create':
[disabled]="(!master) && (action.name !== 'create')"Pero el problema es que no funciona. Obtengo para el primer componente todos los botones habilitados, y para el segundo, el primero está habilitado. ¿Cualquier sugerencia?
<button *ngFor="let action of grid.actions" [disabled]="action.name !== 'create'" name="{{action.name}}" type="submit" class="btn btn-block-container mousePointer" (click)="this[action.callback]('New', grid.actions)" title="{{action.label}}"> <i *ngIf="action.icon" style="color: white !important" class="{{action.icon}}"></i> </button>json:
"actions":[ {"name":"create","label":"New", "icon":"fa fa-file buttonicon","disabled":false, "callback":"create"}, {"name":"update","label":"Edit", "icon":"fa fa-pencil-square-o buttonicon", "disabled":true, "callback":"edit"}, {"name":"deletemodal","label":"Delete", "icon":"fa fa-trash buttonicon", "disabled":true, "callback":"deletemodal"} ],No sé si lo entendí correctamente pero, para tu segundo componente:
[disabled]="(!master) && (action.name !== 'create')" Sabemos que master=false entonces !master=true . Cuando estamos en el botón "crear", action.name =='create' es verdadero, luego action.name !== 'create' es falso.
Tenemos true && false = false , por lo que es normal que su botón no esté deshabilitado.
No sé si es lo que quieres, pero si solo quieres mostrar el botón crear en el maestro, puedes poner:
[disabled]="(!master) || ((!master) && (action.name !== 'create'))"La documentación de bootstrap dice que si desea deshabilitar un botón, debe usarlo como disabled="disabled" donde lo está configurando como verdadero o falso.
Use una función para lograr esto como
<button *ngFor="let action of data.actions" [disabled]="isDisabled(action)" name="{{action.name}}" type="submit" class="btn btn-block-container mousePointer" (click)="this[action.callback]('New', grid.actions)" title="{{action.label}}"> <i *ngIf="action.icon" style="color: white !important" class="{{action.icon}}"></i> </button>Código
isDisabled(action):boolean{ if(action.name !== 'create'){ return 'disabled' } else return '' }