Mesclar sub-matrizes usando Observables

Eu tenho essa estrutura de dados:

[{
    id : 1,
    name : "Item 1",
    subItems : [{
            id : 1,
            name : "SubItem 1"
        },{
            id : 2,
            name : "SubItem 2"
        }
    ]
}, {
    id : 2,
    name : "Item 2",
    subItems : [{
            id : 3,
            name : "SubItem 3"
        }, {
            id : 4,
            name : "SubItem 4"
        }
    ]
}]

Faço a seguinte chamada para um serviço web para obter os itens:this.dataService.get("items")

Devolvido é umObservable<Item[]>. Quais operadores observáveis posso usar para obter apenas uma lista concatenada de subitens? Gostaria de terminar com algo assim:

[{
    id : 1,
    name : "SubItem 1"
}, {
    id : 2,
    name : "SubItem 2"
},
{
    id : 3,
    name : "SubItem 3"
}, {
    id : 4,
    name : "SubItem 4"
}]

Devo usar algo comoflatMap ouconcat?

questionAnswers(2)

yourAnswerToTheQuestion