Как показать один и тот же сваггер-редактор дважды на одной странице в Angular 6 - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу реализовать swagger-editor из npm swagger-editor-dist два раза на одном и том же html в Angular 6+. Я показал Swagger-редактор на кнопке расширения в модальном, а также под кнопкой расширения. Тем не менее, он отображает сваггер только в расширенном модале, а не в div под ним.

Как я могу отображать один и тот же Swagger оба раза?

Front-page ui-

UI

Swagger in Modal -

swagger in modal

код -

app.component. html

<div class="form-group">

<i class="fa fa-expand" data-toggle="modal" data-target="#exampleModalCenter">

</i>

<!-- Modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Swagger of </h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">

<div class="col-12">
<div id="swagger-editorInbox"  style="height:500px">
</div>
</div>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<div class="row"  style="border:solid 1px gray">

<div id="swagger-editorInbox"  style="height:500px"></div>
</div>



</div>

app.component.ts

declare const SwaggerEditorBundle: any

export class swaggerComponent implements OnInit{


editorInbox :any

ngOnInit(){

this.editorInbox = SwaggerEditorBundle({
dom_id: "#swagger_editorInbox"
})

mySwagger = '....//my swagger// ...';

this.editorInbox.specActions.updateSpec(mySwagger);


}


}

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

app.component. html

<div class="form-group">

<i class="fa fa-expand" (click)="showSwaggerModalFunction(); showSwaggerModal= 'true'" data-toggle="modal" data-target="#exampleModalCenter">

</i>

<!-- Modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Swagger of </h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body"   [hidden]="showSwaggerModal !== 'true'">

<div class="col-12">
<div id="swagger-editorInboxDummy"  style="height:500px">
</div>
</div>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button"  (click)="onSaveModal()" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<div class="row"  style="border:solid 1px gray">

<div id="swagger-editorInbox"  style="height:500px"></div>
</div>



</div>

app.component.ts

showSwaggerModal : string = 'false'


showSwaggerModalFunction(){


this.showSwaggerModal = 'true';

var editorInboxDummy = SwaggerEditorBundle({
dom_id : "#swagger-editorInboxDummy"
})

editorInboxDummy.specActions.updateSpec(mySwagger)
}

onSaveModal(){

this.showSwaggerModal = 'false';
}
0 голосов
/ 09 апреля 2020

Создать 2 идентификатора. вам может понадобиться сделать styling. очень сложно заниматься стайлингом. Я буду рекомендовать показывать только по одному за раз. Toggle только содержимое

Id:

<div id="swagger_editorInbox1"  style="height:500px"></div>
</div>

<div id="swagger_editorInbox2"   style="height:500px"></div>
</div>

// JS

this.editorInbox = SwaggerEditorBundle({
dom_id: "#swagger_editorInbox1"
})

this.editorInbox = SwaggerEditorBundle({
dom_id: "#swagger_editorInbox2"
})
...