Почему у меня метод подписки в angular не работает? - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в Angular, Nodejs, и я делал CRUD-приложение для txt-файлов
Я должен перечислить все файлы в списке, если щелкнуть один файл, нужно отобразить данные на a 'P'aragraph
Мой компонент документа
getDocuments () - возвращает массив всех файлов в пути getOneDOcument (name) -> получить все данные файла с заданным «именем» getData (имя) -> должен отправить данные в абзац с идентификатором _> «абзац_контент»


  getDocuments(){
    this.DocumentService.getDocuments()
        .subscribe(res => {
          this.DocumentService.documents = res as Document[]
          console.log("dentro del susbcribe");
          console.log(res);
        });
    console.log("Fuera del subscribe");
  }

  getOneDocument(name : String){
    console.log("NOO");

    this.DocumentService.getOneDocument(name).subscribe(res => {
            this.DocumentService.documentSelected = res as Document;          
            console.log("."); 
        });

  }

  getData(name : String){
    console.log("hello name -> " , name)
    // document.getElementById("paragraph_content").innerHTML = this.DocumentService.getOneDocument(name)

    console.log("Before the subscrie");
    this.DocumentService.getOneDocument(name)
        .subscribe( (res ) =>{
          //I need to change the paragraph content like this
          //document.getElementById("paragraph_content").innerHTML = res.toString() Not working
          console.log("Within", res);
        } )
    console.log("After Subscribe ")
  }


Служба документов
Я получил массивы указанный URL


  getDocuments(){
    console.log("Get Documents method");

   return this.http.get(this.URL_API );
  }
  getOneDocument(name: String){
    console.log("Get OneDocyment method name given: " , name);
    return this.http.get(this.URL_API + `/${name}`)
  }

  postDocument(){
   //left
  }

  deleteDocument(name:String){
   //left
  }


Компонент документа html

<nav>
        <ul class="ds-list-unstyled" *ngFor="let document of DocumentService.documents">
            <li><a href="#" (click)="getData(document)"> {{document}}  </a></li>
        </ul>
    </nav>

    <article>
        <h2>Texto en pantalla: </h2>
        <p id="paragraph_content">Needs to change with a click
        </p>

    </article>

И ответ, который я получил, когда я щелкаю файл, : Image1:

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Свойство XMLHttpRequest responseType является перечисляемым строковым значением, указывающим тип данных, содержащихся в ответе. Это также позволяет автору изменить тип ответа. Вы должны установить responseType в текст.

Попробуйте вот так

getOneDocument(name: String){
    console.log("Get OneDocyment method name given: " , name);
    const requestOptions: Object = {
     responseType: 'text'
   }  
   return this.http.get(`${this.URL_API}/${name}`,requestOptions )

  }
1 голос
/ 29 марта 2020

Я думаю, что ваша проблема в том, что вы не указываете, что данные являются текстовыми, поэтому пытается преобразовать в JSON.

Попробуйте добавить responseType к запросу, что-то вроде этого ,

getOneDocument(name: String){
    return this.http.get(`${this.URL_API}/${name}`, {responseType: 'text'})
  }
...