Avalados por :

Erros comuns ao usar sap.m.IconTabHeader e sap.ui.layout.VerticalLayout em TypeScript: soluções rápidas

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

Olá Equipe do TypeScript,

Aqui estou recebendo 3 erros que acredito não serem erros

Estou usando

sap.m.IconTabHeader para .getSelectedKey

e

sap.ui.layout.VerticalLayout para .setVisible

no console está funcionando

peter.muessig

Tem uma solução rápida para isso?

Adeus Luis

image.png
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Luis Frey

Este error indica que has utilizado una propiedad que no existe en el tipo de objeto al que estás intentando acceder. Verifica el tipo de objeto al que estás accediendo y asegúrate de que la propiedad que intentas acceder esté definida para ese tipo. Si no lo está, deberás cambiar la propiedad que intentas acceder o el tipo de objeto al que estás intentando acceder.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Esse erro ocorre porque `byId` retorna um `UI5Element` (uma classe base da qual todos os controles de visualização estendem), e esta não possui os métodos que você está tentando chamar. Tente converter o elemento para a classe de controle que você realmente está usando na visualização.

const iconTabHeader = this.byId('idIconTabHeader') as IconTabHeader
switch(iconTabHeader.getSelectedKey()) { ... }

Para o método `setVisible`, você deve converter no mínimo para a classe 'Control'.

const c = this.byId('id') as Control
c.setVisible(true)

Funciona no console porque é JavaScript puro, que é menos restrito que o TypeScript. Na realidade, seu código pode ser executado sem erros, mas o TypeScript não permite compilar o código sem verificar os tipos.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Ótimo, funcionou!

image.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Luis,

a mensagem de erro já indica: TypeScript não encontra esses métodos em UI5Element (que representa a classe base sap.ui.base.Element de todos os Controles, etc.).

O compilador TypeScript simplesmente não sabe que this.byId(...) retorna um IconTabHeader. Não pode saber, pois o tipo de controle retornado depende do ID fornecido como argumento (e não há funcionalidade que pesquise o ID no XMLView e informe ao TypeScript qual tipo de controle tem esse ID).

A solução é fazer um cast do resultado dessa chamada para o tipo de controle que você sabe que é retornado:

(this.byId("idIconTabBar") as IconTabBar).getSelectedKey()

Isso é comumente feito no tutorial e exemplos vinculados a partir do ponto de entrada central do UI5 & TypeScript (https://sap.github.io/ui5-typescript), então acredito que faz sentido mencionar esta página para aqueles que chegam aqui e não estão cientes dela.

Saudações

Andreas

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?