none
Desarrollo extensión de TFS: Accesso a métodos de angular desde Javascript externo RRS feed

  • Pregunta

  • Hola,

    Tenemos una aplicación en Angular7 . Hemos creado una extensión en TFS (usamos TFS server 2017) en la que abrimos una pantalla de esa aplicación en una ventana modal (los botones de la aplicación angular los ocultamos para usar los botones de la ventana modal {tenemos que usar los botones de la ventana modal en vez de los de la propia app porque si no, no podemos gestionar el cierre de la ventana modal desde los botones de la app de angular}). 

    Hacemos lo siguiente:

    1- Creamos y abrimos la ventana modal en TFS

                VSS.getService("ms.vss-web.dialog-service").then(function (dialogSvc) {
                    var theDialog;
                    var theInstance;
                    var extInfo = VSS.getExtensionContext();
                    var dialogOptions = {
                     title: "Work Entry Loader",
                       width: "820px",
                      height: "740px",
                       resizable: true,
                      modal: true,
                        buttons:  [
                            {
                                text: "Sav",
                                click: function () {
    ;
                                    //theInstance.guardar();
                                }
                            },
                            {
                                text: "Save and close",
                                click: function () {
                                    theInstance.guardar(false);
                                 
                                }
                            },
                            {
                                text: "Close",
                                click: function () {
                                    theDialog.close();
                                }
                            }
                        ],
                        defaultButton: "Save 1"
                    };
     

                    var contributionConfig = {
                        properties: properties
                    };

                    dialogSvc.openDialog(extInfo.publisherId + "." + extInfo.extensionId + "." + "contextForm", dialogOptions, contributionConfig).then((dialog) => {
                        theDialog = dialog;
      
                        dialog.getContributionInstance("contextForm").then(function (instance) {
                            theInstance = instance;
                  
                        });
                    });

                });

    Para mostrar la app de angular en la ventana modal al cargarla  hacemos un:

    window.location.href = url;

    todo se carga bien y funciona correctamente, incluido el botón cerrar

    Pero necesitamos vincular el botón guardar de la ventana modal al guardar de la app de angular que mostramos en la modal (es decir que llame al mismo método). En relación a esto,  Tenemos los siguientes problemas:

    -Por una parte instance siempre llega como no definido...

    - Además no sabemos como acceder a los métodos de la app en angular desde fuera de la propia aplicación, es decir desde el   click: function () { del  la ventana modal que abrimos.

    ¿como podríamos vincular el botón de la ventana modal que abrimos con la función de a la que llama el botón guardar en  la app de angular? No se si me explico...


    Gracias.

    viernes, 17 de abril de 2020 12:29

Todas las respuestas

  • Hola

     

    Gracias por levantar tu consulta en los foros de MSDN. Estamos analizando su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso.

     

    Gracias por usar los foros de MSDN.

    viernes, 17 de abril de 2020 13:52
    Moderador
  • Hola

    Hemos hecho publico el método de angular al que queremos llamar. La llamada funciona así

    "

    window.angularComponentGuardar.zone.run(function()

    {window.angularComponentGuardar.componentFn(1);});

    "

    El problema es que no nos funciona la llamada al hacerla desde TFS

    ¿Como deberíamos hacer para acceder al window de la página que se muestra en el dialogo que carga TFS?

    Gracias

    P.D: quería adjuntar imágenes para  facilitar la comprensión pero no he podido porque mi cuenta no está verificada

    lunes, 20 de abril de 2020 10:51